mirror of
https://github.com/coder/code-server.git
synced 2026-09-09 19:30:33 +02:00
Compare commits
18 Commits
v4.136.2
...
update/1.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a29914d973 | ||
|
|
8ab0bec5f3 | ||
|
|
8604302ded | ||
|
|
9219c40229 | ||
|
|
ca7a314339 | ||
|
|
0bb6a31fb0 | ||
|
|
0e439cb9dc | ||
|
|
75d7e662b4 | ||
|
|
716a4eedbe | ||
|
|
577da3111f | ||
|
|
8f2983bab5 | ||
|
|
6f23ab892b | ||
|
|
76f7789303 | ||
|
|
9d72dceac6 | ||
|
|
53692fd9fd | ||
|
|
f1dde9b093 | ||
|
|
8c8476eb76 | ||
|
|
322f065cf0 |
2
.github/dependabot.yaml
vendored
2
.github/dependabot.yaml
vendored
@@ -9,8 +9,6 @@ updates:
|
|||||||
cooldown:
|
cooldown:
|
||||||
default-days: 7
|
default-days: 7
|
||||||
labels: []
|
labels: []
|
||||||
commit-message:
|
|
||||||
prefix: "chore"
|
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
|
|||||||
66
.github/semantic.yaml
vendored
66
.github/semantic.yaml
vendored
@@ -1,66 +0,0 @@
|
|||||||
###############################################################################
|
|
||||||
# This file configures "Semantic Pull Requests", which is documented here:
|
|
||||||
# https://github.com/zeke/semantic-pull-requests
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
# Scopes are optionally supplied after a 'type'. For example, in
|
|
||||||
#
|
|
||||||
# feat(docs): autostart ui
|
|
||||||
#
|
|
||||||
# '(docs)' is the scope. Scopes are used to signify where the change occurred.
|
|
||||||
scopes:
|
|
||||||
# docs: changes to the code-server documentation.
|
|
||||||
- docs
|
|
||||||
|
|
||||||
# vendor: changes to vendored dependencies.
|
|
||||||
- vendor
|
|
||||||
|
|
||||||
# deps: changes to code-server's dependencies.
|
|
||||||
- deps
|
|
||||||
|
|
||||||
# cs: changes to code specific to code-server.
|
|
||||||
- cs
|
|
||||||
|
|
||||||
# cli: changes to the command-line interface.
|
|
||||||
- cli
|
|
||||||
|
|
||||||
# We only check that the PR title is semantic. The PR title is automatically
|
|
||||||
# applied to the "Squash & Merge" flow as the suggested commit message, so this
|
|
||||||
# should suffice unless someone drastically alters the message in that flow.
|
|
||||||
titleOnly: true
|
|
||||||
|
|
||||||
# Types are the 'tag' types in a commit or PR title. For example, in
|
|
||||||
#
|
|
||||||
# chore: fix thing
|
|
||||||
#
|
|
||||||
# 'chore' is the type.
|
|
||||||
types:
|
|
||||||
# A build of any kind.
|
|
||||||
- build
|
|
||||||
|
|
||||||
# A user-facing change that corrects a defect in code-server.
|
|
||||||
- fix
|
|
||||||
|
|
||||||
# Any code task that is ignored for changelog purposes. Examples include
|
|
||||||
# devbin scripts and internal-only configurations.
|
|
||||||
- chore
|
|
||||||
|
|
||||||
# Any work performed on CI.
|
|
||||||
- ci
|
|
||||||
|
|
||||||
# Work that directly implements or supports the implementation of a feature.
|
|
||||||
- feat
|
|
||||||
|
|
||||||
# A refactor changes code structure without any behavioral change.
|
|
||||||
- refactor
|
|
||||||
|
|
||||||
# A git revert for any style of commit.
|
|
||||||
- revert
|
|
||||||
|
|
||||||
# Adding tests of any kind. Should be separate from feature or fix
|
|
||||||
# implementations. For example, if a commit adds a fix + test, it's a fix
|
|
||||||
# commit. If a commit is simply bumping coverage, it's a test commit.
|
|
||||||
- test
|
|
||||||
|
|
||||||
# A new release.
|
|
||||||
- release
|
|
||||||
2
.github/workflows/build.yaml
vendored
2
.github/workflows/build.yaml
vendored
@@ -101,7 +101,7 @@ jobs:
|
|||||||
name: Lint TypeScript files
|
name: Lint TypeScript files
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
needs: changes
|
needs: changes
|
||||||
if: needs.changes.outputs.code == 'true'
|
if: needs.changes.outputs.code == 'true' || needs.changes.outputs.ci == 'true' || needs.changes.outputs.npm == 'true'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6
|
||||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6
|
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6
|
||||||
|
|||||||
4
.github/workflows/publish.yaml
vendored
4
.github/workflows/publish.yaml
vendored
@@ -83,7 +83,7 @@ jobs:
|
|||||||
git push --force
|
git push --force
|
||||||
|
|
||||||
- name: Validate package
|
- name: Validate package
|
||||||
uses: heyhusen/archlinux-package-action@c9f94059ccbebe8710d31d582f33ef4e84fe575c # v3.0.0
|
uses: heyhusen/archlinux-package-action@3f7aaada28c782497bfe02d6d6ea365b25fdea12 # v3.0.1
|
||||||
with:
|
with:
|
||||||
pkgver: ${{ env.VERSION }}
|
pkgver: ${{ env.VERSION }}
|
||||||
updpkgsums: true
|
updpkgsums: true
|
||||||
@@ -109,7 +109,7 @@ jobs:
|
|||||||
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
|
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6
|
||||||
- uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0
|
- uses: docker/setup-qemu-action@1f40c72289eff860ee54a304f1438e3cff362e0a # v4.3.0
|
||||||
- uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
- uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
||||||
|
|
||||||
- uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
- uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
||||||
|
|||||||
6
.github/workflows/release.yaml
vendored
6
.github/workflows/release.yaml
vendored
@@ -110,7 +110,7 @@ jobs:
|
|||||||
- run: |
|
- run: |
|
||||||
sed "/^## Unreleased/,/^## / ! d" CHANGELOG.md | head -n -2 | tail -n +3 > .cache/release-notes
|
sed "/^## Unreleased/,/^## / ! d" CHANGELOG.md | head -n -2 | tail -n +3 > .cache/release-notes
|
||||||
if: ${{ matrix.vscode_arch == 'x64' }}
|
if: ${{ matrix.vscode_arch == 'x64' }}
|
||||||
- uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
- uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
if: ${{ matrix.vscode_arch == 'x64' }}
|
if: ${{ matrix.vscode_arch == 'x64' }}
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
@@ -123,7 +123,7 @@ jobs:
|
|||||||
# Platform-specific release.
|
# Platform-specific release.
|
||||||
- run: KEEP_MODULES=1 npm run release
|
- run: KEEP_MODULES=1 npm run release
|
||||||
- run: npm run package
|
- run: npm run package
|
||||||
- uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
- uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
discussion_category_name: "📣 Announcements"
|
discussion_category_name: "📣 Announcements"
|
||||||
@@ -189,7 +189,7 @@ jobs:
|
|||||||
- run: npm run test:native
|
- run: npm run test:native
|
||||||
|
|
||||||
- run: npm run package
|
- run: npm run package
|
||||||
- uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
- uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
discussion_category_name: "📣 Announcements"
|
discussion_category_name: "📣 Announcements"
|
||||||
|
|||||||
4
.github/workflows/security.yaml
vendored
4
.github/workflows/security.yaml
vendored
@@ -80,13 +80,13 @@ jobs:
|
|||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
|
||||||
with:
|
with:
|
||||||
config-file: ./.github/codeql-config.yml
|
config-file: ./.github/codeql-config.yml
|
||||||
languages: javascript
|
languages: javascript
|
||||||
|
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
uses: github/codeql-action/autobuild@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
||||||
|
|||||||
13
CHANGELOG.md
13
CHANGELOG.md
@@ -22,13 +22,13 @@ Code v99.99.999
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
Code v1.136.1
|
Code v1.136.2
|
||||||
|
|
||||||
### Fixed
|
### Changed
|
||||||
|
|
||||||
- The data path was incorrectly being set to `~/.vscode-server-oss/data`.
|
- Update to Code 1.136.2
|
||||||
|
|
||||||
## [4.136.1](https://github.com/coder/code-server/releases/tag/v4.136.1) - 2026-09-08
|
## [4.136.2](https://github.com/coder/code-server/releases/tag/v4.136.2) - 2026-09-08
|
||||||
|
|
||||||
Code v1.136.1
|
Code v1.136.1
|
||||||
|
|
||||||
@@ -36,6 +36,11 @@ Code v1.136.1
|
|||||||
|
|
||||||
- Update to Code 1.136.1
|
- Update to Code 1.136.1
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- 4.136.2 replaces a removed 4.136.1 release that had the data path incorrectly
|
||||||
|
being set to `~/.vscode-server-oss/data`.
|
||||||
|
|
||||||
## [4.135.0](https://github.com/coder/code-server/releases/tag/v4.135.0) - 2026-08-27
|
## [4.135.0](https://github.com/coder/code-server/releases/tag/v4.135.0) - 2026-08-27
|
||||||
|
|
||||||
Code v1.135.0
|
Code v1.135.0
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ main() {
|
|||||||
|
|
||||||
release_archive() {
|
release_archive() {
|
||||||
local release_name="code-server-$VERSION-$OS-$ARCH"
|
local release_name="code-server-$VERSION-$OS-$ARCH"
|
||||||
if [[ $OS == "linux" ]]; then
|
if [[ $OS == "linux" || $OS == "windows" ]]; then
|
||||||
tar -czf "release-packages/$release_name.tar.gz" --owner=0 --group=0 --transform "s/^$RELEASE_PATH/$release_name/" "$RELEASE_PATH"
|
tar -czf "release-packages/$release_name.tar.gz" --owner=0 --group=0 --transform "s/^$RELEASE_PATH/$release_name/" "$RELEASE_PATH"
|
||||||
else
|
else
|
||||||
tar -czf "release-packages/$release_name.tar.gz" -s "/^$RELEASE_PATH/$release_name/" "$RELEASE_PATH"
|
tar -czf "release-packages/$release_name.tar.gz" -s "/^$RELEASE_PATH/$release_name/" "$RELEASE_PATH"
|
||||||
|
|||||||
@@ -41,6 +41,11 @@ main() {
|
|||||||
rsync ./ci/build/code-server.sh "$RELEASE_PATH/bin/code-server"
|
rsync ./ci/build/code-server.sh "$RELEASE_PATH/bin/code-server"
|
||||||
chmod 755 "$RELEASE_PATH/bin/code-server"
|
chmod 755 "$RELEASE_PATH/bin/code-server"
|
||||||
|
|
||||||
|
# Windows cannot run the shell launcher, so it gets one of its own.
|
||||||
|
if [ "$OS" = windows ]; then
|
||||||
|
rsync ./ci/build/code-server.cmd "$RELEASE_PATH/bin/code-server.cmd"
|
||||||
|
fi
|
||||||
|
|
||||||
# Delete the extra bin scripts.
|
# Delete the extra bin scripts.
|
||||||
rm "$RELEASE_PATH/lib/vscode/bin/remote-cli/code-darwin.sh"
|
rm "$RELEASE_PATH/lib/vscode/bin/remote-cli/code-darwin.sh"
|
||||||
rm "$RELEASE_PATH/lib/vscode/bin/remote-cli/code-linux.sh"
|
rm "$RELEASE_PATH/lib/vscode/bin/remote-cli/code-linux.sh"
|
||||||
@@ -111,6 +116,7 @@ bundle_vscode() {
|
|||||||
|
|
||||||
# Exclude Node since we want to place it in a directory above.
|
# Exclude Node since we want to place it in a directory above.
|
||||||
rsync_opts+=(--exclude /node)
|
rsync_opts+=(--exclude /node)
|
||||||
|
rsync_opts+=(--exclude /node.exe)
|
||||||
|
|
||||||
# Exclude Node modules. Note that these will already only include production
|
# Exclude Node modules. Note that these will already only include production
|
||||||
# dependencies, so if we do keep them there is no need to do any
|
# dependencies, so if we do keep them there is no need to do any
|
||||||
@@ -123,8 +129,12 @@ bundle_vscode() {
|
|||||||
|
|
||||||
# Copy the Node binary.
|
# Copy the Node binary.
|
||||||
if [[ $KEEP_MODULES = 1 ]]; then
|
if [[ $KEEP_MODULES = 1 ]]; then
|
||||||
|
if [ "$OS" = windows ]; then
|
||||||
|
cp "./lib/vscode-reh-web-$VSCODE_TARGET/node.exe" "$RELEASE_PATH/lib"
|
||||||
|
else
|
||||||
cp "./lib/vscode-reh-web-$VSCODE_TARGET/node" "$RELEASE_PATH/lib"
|
cp "./lib/vscode-reh-web-$VSCODE_TARGET/node" "$RELEASE_PATH/lib"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Merge the package.json for the web/remote server so we can include
|
# Merge the package.json for the web/remote server so we can include
|
||||||
# dependencies, since we want to ship this via NPM.
|
# dependencies, since we want to ship this via NPM.
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ fix-bin-script() {
|
|||||||
# Fix Node path on Windows.
|
# Fix Node path on Windows.
|
||||||
sed -i.bak 's/^set ROOT_DIR=\(.*\)$/set ROOT_DIR=%~dp0..\\..\\..\\..\r\nset VSROOT_DIR=\1/g' "$script"
|
sed -i.bak 's/^set ROOT_DIR=\(.*\)$/set ROOT_DIR=%~dp0..\\..\\..\\..\r\nset VSROOT_DIR=\1/g' "$script"
|
||||||
sed -i.bak 's/%ROOT_DIR%\\out/%VSROOT_DIR%\\out/g' "$script"
|
sed -i.bak 's/%ROOT_DIR%\\out/%VSROOT_DIR%\\out/g' "$script"
|
||||||
|
sed -i.bak 's/%ROOT_DIR%\\node.exe/%ROOT_DIR%\\lib\\node.exe/g' "$script"
|
||||||
|
|
||||||
chmod +x "$script"
|
chmod +x "$script"
|
||||||
rm "$script.bak"
|
rm "$script.bak"
|
||||||
@@ -132,7 +133,7 @@ EOF
|
|||||||
# Set vars and fix paths.
|
# Set vars and fix paths.
|
||||||
case $OS in
|
case $OS in
|
||||||
windows)
|
windows)
|
||||||
fix-bin-script remote-cli/code.cmd
|
fix-bin-script remote-cli/code-server.cmd
|
||||||
fix-bin-script helpers/browser.cmd
|
fix-bin-script helpers/browser.cmd
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
8
ci/build/code-server.cmd
Normal file
8
ci/build/code-server.cmd
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem This script is intended to be bundled into the standalone releases.
|
||||||
|
rem Runs code-server with the bundled node binary.
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
set "ROOT=%~dp0.."
|
||||||
|
"%ROOT%\lib\node.exe" "%ROOT%" %*
|
||||||
@@ -15,9 +15,9 @@ type: application
|
|||||||
# This is the chart version. This version number should be incremented each time you make changes
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
# to the chart and its templates, including the app version.
|
# to the chart and its templates, including the app version.
|
||||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
version: 3.51.0
|
version: 3.51.1
|
||||||
|
|
||||||
# This is the version number of the application being deployed. This version number should be
|
# This is the version number of the application being deployed. This version number should be
|
||||||
# incremented each time you make changes to the application. Versions are not expected to
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
appVersion: 4.136.1
|
appVersion: 4.136.2
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ replicaCount: 1
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: codercom/code-server
|
repository: codercom/code-server
|
||||||
tag: '4.136.1'
|
tag: '4.136.2'
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
|
|
||||||
# Specifies one or more secrets to be used when pulling images from a
|
# Specifies one or more secrets to be used when pulling images from a
|
||||||
|
|||||||
@@ -49,7 +49,10 @@ if [[ ! ${ARCH-} ]]; then
|
|||||||
export ARCH
|
export ARCH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! ${OS-} ]]; then
|
# Windows predefines OS as Windows_NT for every process, so on a windows shell
|
||||||
|
# the check below would always find a value and never call os(). That is not a
|
||||||
|
# name this build knows, so it does not count as one the caller chose.
|
||||||
|
if [[ ! ${OS-} || ${OS-} == "Windows_NT" ]]; then
|
||||||
OS=$(os)
|
OS=$(os)
|
||||||
export OS
|
export OS
|
||||||
fi
|
fi
|
||||||
|
|||||||
Submodule lib/vscode updated: a44adf7f53...88e44fa0e0
55
package-lock.json
generated
55
package-lock.json
generated
@@ -329,29 +329,43 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@humanfs/core": {
|
"node_modules/@humanfs/core": {
|
||||||
"version": "0.19.1",
|
"version": "0.19.2",
|
||||||
"resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
|
||||||
"integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
|
"integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@humanfs/types": "^0.15.0"
|
||||||
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.18.0"
|
"node": ">=18.18.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@humanfs/node": {
|
"node_modules/@humanfs/node": {
|
||||||
"version": "0.16.7",
|
"version": "0.16.8",
|
||||||
"resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
|
"resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz",
|
||||||
"integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
|
"integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@humanfs/core": "^0.19.1",
|
"@humanfs/core": "^0.19.2",
|
||||||
|
"@humanfs/types": "^0.15.0",
|
||||||
"@humanwhocodes/retry": "^0.4.0"
|
"@humanwhocodes/retry": "^0.4.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.18.0"
|
"node": ">=18.18.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@humanfs/types": {
|
||||||
|
"version": "0.15.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz",
|
||||||
|
"integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.18.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@humanwhocodes/module-importer": {
|
"node_modules/@humanwhocodes/module-importer": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
|
||||||
@@ -5277,12 +5291,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/qs": {
|
"node_modules/qs": {
|
||||||
"version": "6.15.2",
|
"version": "6.16.0",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz",
|
||||||
"integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==",
|
"integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==",
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"side-channel": "^1.1.0"
|
"es-define-property": "^1.0.1",
|
||||||
|
"side-channel": "^1.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.6"
|
"node": ">=0.6"
|
||||||
@@ -5750,14 +5765,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/side-channel": {
|
"node_modules/side-channel": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
|
||||||
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
|
"integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es-errors": "^1.3.0",
|
"es-errors": "^1.3.0",
|
||||||
"object-inspect": "^1.13.3",
|
"object-inspect": "^1.13.4",
|
||||||
"side-channel-list": "^1.0.0",
|
"side-channel-list": "^1.0.1",
|
||||||
"side-channel-map": "^1.0.1",
|
"side-channel-map": "^1.0.1",
|
||||||
"side-channel-weakmap": "^1.0.2"
|
"side-channel-weakmap": "^1.0.2"
|
||||||
},
|
},
|
||||||
@@ -5769,13 +5784,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/side-channel-list": {
|
"node_modules/side-channel-list": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
|
||||||
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
|
"integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es-errors": "^1.3.0",
|
"es-errors": "^1.3.0",
|
||||||
"object-inspect": "^1.13.3"
|
"object-inspect": "^1.13.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { field, Level, logger } from "@coder/logger"
|
import { field, Level, logger } from "@coder/logger"
|
||||||
|
import * as crypto from "crypto"
|
||||||
import { promises as fs } from "fs"
|
import { promises as fs } from "fs"
|
||||||
import { load } from "js-yaml"
|
import { load } from "js-yaml"
|
||||||
import * as path from "path"
|
import * as path from "path"
|
||||||
@@ -561,7 +562,7 @@ export async function setDefaults(cliArgs: UserProvidedArgs, configArgs?: Config
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!args["session-socket"]) {
|
if (!args["session-socket"]) {
|
||||||
args["session-socket"] = path.join(args["user-data-dir"], "code-server-ipc.sock")
|
args["session-socket"] = defaultSessionSocket(args["user-data-dir"])
|
||||||
}
|
}
|
||||||
process.env.CODE_SERVER_SESSION_SOCKET = args["session-socket"]
|
process.env.CODE_SERVER_SESSION_SOCKET = args["session-socket"]
|
||||||
|
|
||||||
@@ -710,6 +711,25 @@ export async function setDefaults(cliArgs: UserProvidedArgs, configArgs?: Config
|
|||||||
} as DefaultedArgs // TODO: Technically no guarantee this is fulfilled.
|
} as DefaultedArgs // TODO: Technically no guarantee this is fulfilled.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The session socket to use when one was not given.
|
||||||
|
*
|
||||||
|
* Windows has no Unix sockets, so there it is a named pipe, which lives in its
|
||||||
|
* own namespace rather than on disk and so cannot be placed inside the user
|
||||||
|
* data directory. The name is derived from that directory anyway, so that two
|
||||||
|
* instances with separate data directories do not collide and a later
|
||||||
|
* invocation with the same one finds the first. Windows paths are compared
|
||||||
|
* without regard to case, so the name is folded before it is hashed; otherwise
|
||||||
|
* the same directory typed two ways would produce two pipes.
|
||||||
|
*/
|
||||||
|
export function defaultSessionSocket(userDataDir: string, platform: NodeJS.Platform = process.platform): string {
|
||||||
|
if (platform !== "win32") {
|
||||||
|
return path.join(userDataDir, "code-server-ipc.sock")
|
||||||
|
}
|
||||||
|
const name = crypto.createHash("sha256").update(path.resolve(userDataDir).toLowerCase()).digest("hex").slice(0, 16)
|
||||||
|
return String.raw`\\.\pipe\code-server-ipc-${name}`
|
||||||
|
}
|
||||||
|
|
||||||
export function getResolvedPathsFromArgs(args: UserProvidedArgs): string[] {
|
export function getResolvedPathsFromArgs(args: UserProvidedArgs): string[] {
|
||||||
return (args._ ?? []).map((p) => path.resolve(p))
|
return (args._ ?? []).map((p) => path.resolve(p))
|
||||||
}
|
}
|
||||||
|
|||||||
19
test/e2e/settings.test.ts
Normal file
19
test/e2e/settings.test.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import { promises as fs } from "fs"
|
||||||
|
import * as path from "path"
|
||||||
|
import { clean } from "../utils/helpers"
|
||||||
|
import { describe, test, expect } from "./baseFixture"
|
||||||
|
|
||||||
|
describe("settings", ["--disable-workspace-trust"], {}, () => {
|
||||||
|
const testName = "settings-local"
|
||||||
|
test.beforeAll(async () => {
|
||||||
|
await clean(testName)
|
||||||
|
})
|
||||||
|
|
||||||
|
test("should see startup editor set to none", async ({ codeServerPage }) => {
|
||||||
|
await codeServerPage.navigateMenus(["File", "Preferences", "Settings"])
|
||||||
|
await codeServerPage.page.waitForSelector(".settings-editor")
|
||||||
|
await codeServerPage.page.keyboard.type("startupEditor")
|
||||||
|
const el = codeServerPage.page.getByLabel("workbench.startupEditor")
|
||||||
|
await expect(el).toHaveValue("none")
|
||||||
|
})
|
||||||
|
})
|
||||||
65
test/package-lock.json
generated
65
test/package-lock.json
generated
@@ -1497,6 +1497,19 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/baseline-browser-mapping": {
|
||||||
|
"version": "2.11.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.21.tgz",
|
||||||
|
"integrity": "sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"baseline-browser-mapping": "dist/cli.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/brace-expansion": {
|
||||||
"version": "1.1.18",
|
"version": "1.1.18",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
|
||||||
@@ -1529,9 +1542,9 @@
|
|||||||
"license": "BSD-2-Clause"
|
"license": "BSD-2-Clause"
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.24.0",
|
"version": "4.28.9",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz",
|
||||||
"integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==",
|
"integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1549,10 +1562,11 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"caniuse-lite": "^1.0.30001663",
|
"baseline-browser-mapping": "^2.11.20",
|
||||||
"electron-to-chromium": "^1.5.28",
|
"caniuse-lite": "^1.0.30001810",
|
||||||
"node-releases": "^2.0.18",
|
"electron-to-chromium": "^1.5.420",
|
||||||
"update-browserslist-db": "^1.1.0"
|
"node-releases": "^2.0.54",
|
||||||
|
"update-browserslist-db": "^1.3.2"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"browserslist": "cli.js"
|
"browserslist": "cli.js"
|
||||||
@@ -1636,9 +1650,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001667",
|
"version": "1.0.30001810",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz",
|
||||||
"integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==",
|
"integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1980,9 +1994,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.5.32",
|
"version": "1.5.422",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.422.tgz",
|
||||||
"integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==",
|
"integrity": "sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
@@ -3852,11 +3866,14 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
"version": "2.0.18",
|
"version": "2.0.54",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz",
|
||||||
"integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
|
"integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/normalize-path": {
|
"node_modules/normalize-path": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
@@ -4024,9 +4041,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
"integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
@@ -4740,9 +4757,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/update-browserslist-db": {
|
"node_modules/update-browserslist-db": {
|
||||||
"version": "1.1.1",
|
"version": "1.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz",
|
||||||
"integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
|
"integrity": "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -4761,7 +4778,7 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"escalade": "^3.2.0",
|
"escalade": "^3.2.0",
|
||||||
"picocolors": "^1.1.0"
|
"picocolors": "^1.1.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"update-browserslist-db": "cli.js"
|
"update-browserslist-db": "cli.js"
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
UserProvidedArgs,
|
UserProvidedArgs,
|
||||||
bindAddrFromArgs,
|
bindAddrFromArgs,
|
||||||
defaultConfigFile,
|
defaultConfigFile,
|
||||||
|
defaultSessionSocket,
|
||||||
parse,
|
parse,
|
||||||
parseConfigFile,
|
parseConfigFile,
|
||||||
setDefaults,
|
setDefaults,
|
||||||
@@ -37,7 +38,7 @@ const defaults = {
|
|||||||
usingEnvHashedPassword: false,
|
usingEnvHashedPassword: false,
|
||||||
"extensions-dir": path.join(paths.data, "extensions"),
|
"extensions-dir": path.join(paths.data, "extensions"),
|
||||||
"user-data-dir": paths.data,
|
"user-data-dir": paths.data,
|
||||||
"session-socket": path.join(paths.data, "code-server-ipc.sock"),
|
"session-socket": defaultSessionSocket(paths.data),
|
||||||
"app-name": "code-server",
|
"app-name": "code-server",
|
||||||
_: [],
|
_: [],
|
||||||
}
|
}
|
||||||
@@ -977,6 +978,26 @@ describe("bindAddrFromArgs", () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("defaultSessionSocket", () => {
|
||||||
|
const dataDir = path.join("/home/coder/.local/share", "code-server")
|
||||||
|
|
||||||
|
it("should put the socket in the user data directory", () => {
|
||||||
|
expect(defaultSessionSocket(dataDir, "linux")).toBe(path.join(dataDir, "code-server-ipc.sock"))
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should use a named pipe on windows", () => {
|
||||||
|
expect(defaultSessionSocket(dataDir, "win32")).toMatch(/^\\\\\.\\pipe\\code-server-ipc-[0-9a-f]{16}$/)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should give separate data directories separate pipes", () => {
|
||||||
|
expect(defaultSessionSocket(dataDir, "win32")).not.toBe(defaultSessionSocket(dataDir + "-other", "win32"))
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should give one data directory one pipe however it is spelled", () => {
|
||||||
|
expect(defaultSessionSocket(dataDir.toUpperCase(), "win32")).toBe(defaultSessionSocket(dataDir, "win32"))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe("defaultConfigFile", () => {
|
describe("defaultConfigFile", () => {
|
||||||
it("should return the default config file as a string", async () => {
|
it("should return the default config file as a string", async () => {
|
||||||
const password = await generatePassword()
|
const password = await generatePassword()
|
||||||
|
|||||||
Reference in New Issue
Block a user