Repository navigation
Description
What happened
From a second computer, I clicked update on the banner for a Linux machine running the T3 Code desktop app from a pacman package (Omarchy t3code-bin). The update was offered, then rejected with:
Server update failed: Automatic updates on Linux require the AppImage or the .deb package.
The machine's own desktop app also showed an update banner. On this install type, the in-app path can't succeed, so the update stays offered and keeps failing.
Diagnosis
The server advertises a desktop app update without checking whether the desktop app can install one.
apps/desktop/src/updates/DesktopUpdates.ts:335disables auto-update on Linux unless the app is an AppImage or.deb.apps/server/src/environment/ServerEnvironment.ts:204-205setsdesktopAppUpdatefromserverSelfUpdate === "desktop-managed"and the control fd alone. The nearby comment says a control fd guarantees update support.- Clients trust that capability (
packages/client-runtime/src/connection/outdatedHostUpdate.ts:106-107,apps/web/src/components/sidebar/updateEverything.logic.ts:100), so they offer the update. apps/server/src/cloud/selfUpdate.ts:154-164then runs the desktop update, which fails on the disabled reason.
Line references are from v0.1.6. The DesktopUpdates.ts check is unchanged on v0.1.7 and main. The other references were not rechecked there.
Possible direction: include the desktop's update-disabled state in the capability, so clients can say "update this machine with its package manager" instead of offering an update that can't work.
Steps to reproduce
- On Linux, install the desktop app from a pacman package (not an AppImage or
.deb). - Leave Local environment on, so the desktop app runs the server.
- Wait for a newer release, so the server is behind.
- Connect from another computer and use the update banner.
- The update is offered, then fails with the error above.
Version
Bug happened on: desktop app and server 0.1.6 (t3code-bin 0.1.6-1). The other computer's client version is unknown.
Triage CLI: 0.1.7.
Environment
- Host: Arch-based Omarchy, Linux 7.2.11, x64, Hyprland/Wayland
- Install:
t3code-binfrom the Omarchy repo, plus a systemd user background service in the same T3 home - Surface: desktop app on the host and on a second computer
Evidence
`server.trace.ndjson`, span `cloud.server_self_update.update`, called from `ws.rpc.server.updateServerWithProgress`:
2026-11-03T12:28:12Z Failure
2026-11-03T13:21:56Z Failure
2026-11-04T10:56:11Z Failure
ServerSelfUpdateError: Server update failed: Automatic updates on Linux require the AppImage or the .deb package.
`/.well-known/t3/environment` on the affected server reported `serverVersion: 0.1.6`, `serverSelfUpdate: desktop-managed`, `desktopAppUpdate: true`.
Also seen on this machine: the background service stayed on 0.1.3 while the package moved to 0.1.6. At boot on 2026-11-04 it ran on a database at migration 76, logging migrations 70-76 as "unknown to this build". The desktop app then failed with `ServerAlreadyRunningError`, and the service stopped about 27 seconds later. What stopped it was not established.Related issues
- Home-ownership dialog gives the same advice for an old and a current background service, and never mentions turning off Local environment #22820: same-home conflict between the desktop app and background service, and its dialog advice
- [Bug]: Disabling Local environment does not persist; Nightly repeatedly conflicts with background service after restart #26144: Local environment setting not persisting (macOS)
- [Bug]: Service unit stays pinned to the runtime that installed it, so deleting old runtimes breaks the next restart #17490: service unit pinned to the runtime that installed it
No existing issue found for this rejection.
Fix applied or workaround
This machine needed the background service anyway, so:
- Turned off Settings → Environments → Local environment.
- Ran
npx t3@latest update --yes, moving the service from 0.1.3 to 0.1.7. - Paired the desktop app with the service using
t3 pair.
The server now reports serverSelfUpdate: boot-service, and the second computer reconnected. A remote update through this path has not been tested yet, because 0.1.7 is the latest stable release.
This does not fix the underlying bug. Installs without a background service can still only update through their package manager, and the desktop app stays on 0.1.6 until the package updates.
Filed by
Claude Code (Claude Opus 5.5), via t3 triage.
Activity