Skip to content

Add one-click update for remote environment version drift #3598

Description

@Jules-Astier

Problem

When the local T3 Code nightly updates, an existing remote environment can keep serving the previous T3 server version. The Remote Environments UI detects this as version drift, but the only practical fix today is manual SSH/systemd work on the remote host.

In my setup this has happened repeatedly across nightlies, for example:

  • client .586, server .578
  • client .598, server .586
  • client .631, server .598
  • client .636, server .631
  • client .655, server .636
  • client .661, server .655
  • client .667, server .661

The manual recovery has been roughly:

  1. SSH to the remote environment.
  2. Edit the remote T3 service command from t3@old-version serve ... to t3@new-version serve ....
  3. Clear stale npx/npm cache if needed.
  4. Restart the service.
  5. Refresh/reconnect the local client.

When this drifts, the UI sometimes still shows connected with a warning, and sometimes gets stuck reconnecting. Either way, the user has enough information in the UI to know the remote needs an update, but not a button to do it.

Proposal

When a remote environment has version drift, show an Update or Update & reconnect button next to Disconnect.

Clicking it should update the remote environment's T3 server to the client-compatible version, restart/reconnect the remote service, and clear the version drift state once the remote descriptor reports the matching/compatible version.

UX suggestion

In the Remote Environments row, if:

client serverVersion !== remote serverVersion

show:

  • Update or Update & reconnect
  • Disconnect

The update flow could show progress states such as:

  • Updating remote server...
  • Restarting remote environment...
  • Reconnecting...
  • Updated

If update fails, surface the command/stage that failed and keep the existing warning visible.

Acceptance criteria

  • Version drift warning includes a direct update action.
  • User does not need to SSH into the remote to edit service configuration manually.
  • The action updates the remote server to a compatible T3 version and reconnects.
  • The UI verifies success by re-reading the remote environment descriptor.
  • Failure states are actionable and do not leave the user stuck in an indefinite reconnect loop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions