Skip to content

[Bug]: t3 code forgets the used "--force-device-scale-factor" when it self-updates #12198

Closed

Description

@mo

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. on a linux computer with a very high DPI screen, launch T3 code with "--force-device-scale-factor=X" (I launch it like this every time through a shell script)
  2. wait until T3 Code notitices a pending T3 Code update (happens very often)
  3. click the "update" + "relaunch" buttons
  4. now T3 Code relaunches with tiny unreadable GUI because it re-launches itself without the --force-device-scale-factor=X parameter (it would be much nicer if it was smart enough to notice that it is launched using --force-device-scale-factor=X and then just also re-launched itself with that exact same --force-device-scale-factor=X parameter)

Expected behavior

it would be much nicer if it was smart enough to notice that it is launched using --force-device-scale-factor=X and then just also re-launched itself with that exact same --force-device-scale-factor=X parameter

Actual behavior

now T3 Code relaunches with tiny unreadable GUI because it re-launches itself without the --force-device-scale-factor=X parameter

Impact

Cosmetic issue

Version or commit

0.0.42

Environment

linux

Logs or stack traces

Screenshots, recordings, or supporting files

No response

Workaround

restarting T3 Code again using your normal method with the desired --force-device-scale-factor=X parameter

Activity

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Sep 17, 2026
  2. juliusmarminge commented on Sep 17, 2026

    @juliusmarminge
    Member

    Triage

    Thanks for the clear report — this looks real.

    What happens

    Linux desktop updates install through electron-updater (quitAndInstall), not through our in-app relaunch. The AppImage installer starts the new binary with an empty argument list, so --force-device-scale-factor=X from your script is dropped. After restart the UI is unscaled until you launch it again the usual way.

    In-app relaunches (WSL / local environment / server exposure) already pass process.argv.slice(1). The update path does not use that.

    Likely code

    • apps/desktop/src/updates/DesktopUpdates.ts — quitAndInstall({ isSilent: true, isForceRunAfter: true })
    • apps/desktop/src/app/DesktopLifecycle.ts — argv-preserving relaunch (not used for updates)
    • apps/desktop/src/app/DesktopPreReadyPlatform.ts / DesktopEarlyElectronStartup.ts — existing pre-ready Chromium switch + desktop-settings.json pattern

    Fix direction

    Persisting the last explicit --force-device-scale-factor and re-applying it before app.ready is more reliable than trying to forward argv through the updater (no args API on the AppImage installer). That would also cover .desktop / dock launches, which do not include extra Chromium flags today.

    Workaround

    Quit and start T3 Code again with your script and --force-device-scale-factor=X. View → Zoom is session-only. Settings → Appearance font size persists but is not a substitute for device scale.

    Accepting as a Linux desktop bug.

  3. added
    acceptedfeature request accepted
    via-triageFiled through npx t3 triage
    and removed
    needs-triageIssue needs maintainer review and initial categorization.
    on Sep 17, 2026
  4. jkramer5103 commented on Sep 30, 2026

    @jkramer5103

    Fix submitted in #14421. The Linux desktop startup now remembers an explicit device scale factor and restores it before Electron readiness when the updater relaunches without arguments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    acceptedfeature request acceptedbugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions