mirror of
https://github.com/cdr/code-server.git
synced 2026-04-12 10:02:05 +02:00
feat: expose --reconnection-grace-time CLI flag
Pass through VS Code Server's --reconnection-grace-time argument, allowing users to configure how long the server waits for a disconnected client to reconnect before cleaning up the session. This is useful for users whose client machines sleep overnight, causing the default 3-hour grace period to expire and forcing a "Reload Window" on wake. The flag can also be set via $CS_RECONNECTION_GRACE_TIME env var or in config.yaml. Fixes #7665 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d544846caa
commit
5a458559ba
2 changed files with 28 additions and 0 deletions
|
|
@ -52,6 +52,7 @@ export interface UserProvidedCodeArgs {
|
|||
"disable-workspace-trust"?: boolean
|
||||
"disable-getting-started-override"?: boolean
|
||||
"disable-proxy"?: boolean
|
||||
"reconnection-grace-time"?: string
|
||||
"session-socket"?: string
|
||||
"cookie-suffix"?: string
|
||||
"link-protection-trusted-domains"?: string[]
|
||||
|
|
@ -315,6 +316,12 @@ export const options: Options<Required<UserProvidedArgs>> = {
|
|||
type: "number",
|
||||
description: "Timeout in seconds to wait before shutting down when idle.",
|
||||
},
|
||||
"reconnection-grace-time": {
|
||||
type: "string",
|
||||
description:
|
||||
"Override the reconnection grace time in seconds. Clients who disconnect for longer than this duration will need to \n" +
|
||||
"reload the window. Defaults to 10800 (3 hours).",
|
||||
},
|
||||
}
|
||||
|
||||
export const optionDescriptions = (opts: Partial<Options<Required<UserProvidedArgs>>> = options): string[] => {
|
||||
|
|
@ -632,6 +639,10 @@ export async function setDefaults(cliArgs: UserProvidedArgs, configArgs?: Config
|
|||
args["github-auth"] = process.env.GITHUB_TOKEN
|
||||
}
|
||||
|
||||
if (process.env.CS_RECONNECTION_GRACE_TIME) {
|
||||
args["reconnection-grace-time"] = process.env.CS_RECONNECTION_GRACE_TIME
|
||||
}
|
||||
|
||||
if (process.env.CODE_SERVER_IDLE_TIMEOUT_SECONDS) {
|
||||
if (isNaN(Number(process.env.CODE_SERVER_IDLE_TIMEOUT_SECONDS))) {
|
||||
logger.info("CODE_SERVER_IDLE_TIMEOUT_SECONDS must be a number")
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ describe("parser", () => {
|
|||
delete process.env.PASSWORD
|
||||
delete process.env.CS_DISABLE_FILE_DOWNLOADS
|
||||
delete process.env.CS_DISABLE_GETTING_STARTED_OVERRIDE
|
||||
delete process.env.CS_RECONNECTION_GRACE_TIME
|
||||
delete process.env.VSCODE_PROXY_URI
|
||||
delete process.env.CS_DISABLE_PROXY
|
||||
console.log = jest.fn()
|
||||
|
|
@ -115,6 +116,8 @@ describe("parser", () => {
|
|||
|
||||
["--session-socket", "/tmp/override-code-server-ipc-socket"],
|
||||
|
||||
["--reconnection-grace-time", "86400"],
|
||||
|
||||
["--host", "0.0.0.0"],
|
||||
"4",
|
||||
"--",
|
||||
|
|
@ -151,6 +154,7 @@ describe("parser", () => {
|
|||
version: true,
|
||||
"bind-addr": "192.169.0.1:8080",
|
||||
"session-socket": "/tmp/override-code-server-ipc-socket",
|
||||
"reconnection-grace-time": "86400",
|
||||
"abs-proxy-base-path": "/codeserver/app1",
|
||||
"skip-auth-preflight": true,
|
||||
})
|
||||
|
|
@ -457,6 +461,19 @@ describe("parser", () => {
|
|||
})
|
||||
})
|
||||
|
||||
it("should use env var CS_RECONNECTION_GRACE_TIME", async () => {
|
||||
process.env.CS_RECONNECTION_GRACE_TIME = "86400"
|
||||
const args = parse([])
|
||||
expect(args).toEqual({})
|
||||
|
||||
const defaultArgs = await setDefaults(args)
|
||||
expect(defaultArgs).toEqual({
|
||||
...defaults,
|
||||
"reconnection-grace-time": "86400",
|
||||
})
|
||||
delete process.env.CS_RECONNECTION_GRACE_TIME
|
||||
})
|
||||
|
||||
it("should error if password passed in", () => {
|
||||
expect(() => parse(["--password", "supersecret123"])).toThrowError(
|
||||
"--password can only be set in the config file or passed in via $PASSWORD",
|
||||
|
|
|
|||
Loading…
Reference in a new issue