# \[Bug\]: desktop clients older than \#23037 can't connect to newer servers \(compactIdleThreads changed from boolean to string\) · Issue \#23109 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/issues/23109)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: backlog

Priority: 0

## Description

[Discussion and activity](https://git.cafe/pingdotgg/t3code/issues/23109)

---

### Area

Server / desktop remote connection (contracts)

### Steps to reproduce

1. Run a T3 server built from `main` at or after d13fc84670 (#23037), for example `5c3721e20`.
2. Connect to it over SSH from the desktop app at nightly `v0.1.2-nightly.20261021.3486` (`680152e27`), which predates #23037.

### Expected behavior

The older desktop client connects, or reports a version mismatch.

### Actual behavior

The connection fails in a loop with `Cause: transport` and `Error: <host> connection failed unexpectedly.`

The SSH tunnel, `/.well-known/t3/environment`, `/api/auth/session` and `/api/auth/websocket-ticket` all return 200, and `/ws` upgrades with 101. Each time, the client closes the socket within a few seconds of `ws.rpc.subscribeServerConfig`, which the server logs as `InterruptError: All fibers interrupted without error`.

#23037 changed `ServerSettings.compactIdleThreads` from `Schema.Boolean` to `IdleCompactionModeSetting`, which encodes as a string literal (`"onReturn"` by default). A client built before #23037 decodes that field as `Schema.Boolean`, so it fails to decode the server config and drops the connection. The patch type changed the same way (`Schema.optionalKey(Schema.Boolean)` to `Schema.optionalKey(IdleCompactionMode)`).

### Impact

Any desktop client older than #23037 cannot use a remote environment running a newer server. No nightly containing #23037 had shipped yet, so the newest published desktop build couldn't connect to a server built from `main`.

### Version or commit

- Desktop client: `v0.1.2-nightly.20261021.3486` (`680152e27`)
- Server: `5c3721e20` (contains d13fc84670)

### Environment

macOS desktop client connecting over SSH to a Linux (Arch) host.

### Workaround

Run a server build from before d13fc84670 (for example `0bdf33a34`) until the client updates.

A possible fix is to keep `compactIdleThreads` a boolean on the wire and carry the mode in a new field, or to have clients decode unknown setting values leniently.

