Skip to content

[Bug]: T3 Code 0.0.40 desktop UI: "T3 Code could not load" #10719

Closed

Description

@Cthuulhaa

Before submitting

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

Area

apps/desktop

Steps to reproduce

  1. Download the T3 Code 0.0.40 Linux AppImage.
  2. Make it executable.
  3. Launch it normally:
    ./T3-Code.AppImage
  4. The Electron window opens but displays “T3 Code could not load.”

For more detailed logging: ./T3-Code.AppImage --enable-logging=stderr --v=1

Expected behavior

The desktop UI should load normally after the backend starts.

Actual behavior

The renderer fails while loading the bundled UI:

T3 Code failed to start. SyntaxError: The requested module './ConnectionStatusDot-DxBlMuxG.js' does not provide an export named 't'
source: t3code://app/assets/index-69CxTXc4.js (2)

Impact

Blocks work completely

Version or commit

No response

Environment

T3 Code: 0.0.40, Package: Linux AppImage, Desktop environment: Cinnamon Linux, distribution: Linux Mint

Logs or stack traces

Screenshots, recordings, or supporting files

No response

Workaround

No response

Activity

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

    @juliusmarminge
    Member

    Triage

    Accepted as a critical desktop launch bug. 0.0.40 Linux AppImage opens a window, then the renderer dies while loading the bundled UI.

    This is not a duplicate of #10517. That issue is a blank window when the backend never serves t3code://app. Here the page does load: bootstrap.ts runs, showBootError replaces the splash with “T3 Code could not load.”, and the console has a concrete ESM error.

    T3 Code failed to start. SyntaxError: The requested module './ConnectionStatusDot-DxBlMuxG.js' does not provide an export named 't'
    source: t3code://app/assets/index-69CxTXc4.js (2)
    

    What the code does

    Production desktop serves the packaged web client through the backend (t3code://app in apps/desktop/src/electron/ElectronProtocol.ts → static files from apps/server/src/http.ts / server/dist/client).

    Startup is:

    1. apps/web/index.html loads src/bootstrap.ts
    2. bootstrap.ts does import("./main").catch(showBootError)
    3. apps/web/src/lib/bootError.ts logs T3 Code failed to start. and paints “T3 Code could not load.” (the SyntaxError is shown only in DEV, which is why it only appears in the console / --enable-logging)

    ConnectionStatusDot-DxBlMuxG.js is a Vite/Rolldown production chunk for apps/web/src/components/ConnectionStatusDot.tsx. That module is on the critical path:

    • Root: __root.tsx → ConnectOnboardingDialog → CloudEnvironmentConnectList → ConnectionStatusDot
    • Lazy settings: settings.connections, settings.providers (the latter also imports connectionPhaseDotClassName / connectionPhasePingClassName)
    • Welcome wizard

    apps/web/vite.config.ts enables TanStack autoCodeSplitting: true on Vite 8 / Rolldown (vite-plus 0.3.0). A shared module used from the root graph and split routes becomes its own hashed chunk. index-*.js then imports a minified binding { t } that the chunk does not export. That is an inter-chunk export mismatch (known Vite 8 / Rolldown class), not a missing file or FUSE/AppImage launch failure. A 404/HTML fallback would be Unexpected token '<'.

    The same client bundle is packaged into every desktop artifact. Linux is the first report (0.0.40 published ~11h before this issue); macOS, Windows, and hosted web may be broken the same way.

    ConnectionStatusDot.tsx itself did not change between 0.0.39 and 0.0.40. The 0.0.39→0.0.40 web graph did (onboarding import grouping, settings/UI). vite-plus 0.3.0 was already in 0.0.39 (#9327).

    Related

    No open PR for this export mismatch.

    Next step

    1. Inspect the shipped 0.0.40 client (apps/server/dist/client/assets/ in the AppImage): what index-69CxTXc4.js imports as { t } from ConnectionStatusDot-DxBlMuxG.js, and what that chunk actually exports.
    2. If they disagree, fix the web production split (keep ConnectionStatusDot in the main chunk, or move the phase helpers out of the shared module) and/or bump Rolldown. Re-check the other 0.0.40 desktop artifacts and hosted web — this may not be Linux-only.
    3. Useful confirmations: did 0.0.39 work on the same machine? Does hosted web / macOS / Windows 0.0.40 fail with the same ConnectionStatusDot-*.js export error?
  3. added
    via-triageFiled through npx t3 triage
    acceptedfeature request accepted
    and removed
    needs-triageIssue needs maintainer review and initial categorization.
    on Sep 8, 2026
  4. added
    needs more infoInitial triage showed no bug. Awaiting more info
    and removed
    needs more infoInitial triage showed no bug. Awaiting more info
    on Oct 22, 2026
  5. juliusmarminge commented on Oct 26, 2026

    @juliusmarminge
    Member

    Retested the current production desktop bundle at 3de45c62 on Linux x86_64 under Xvfb, D-Bus and an unlocked keyring.

    Ran vp run build:desktop, then launched the built Electron app with --no-sandbox --disable-gpu --home-dir /tmp/issue-10719-run/home --enable-logging=stderr, with T3CODE_HOME and the Chromium config directory isolated to fresh temporary directories. The backend became ready and the production renderer reached the connected onboarding screen. No ConnectionStatusDot export error, boot-error screen, or renderer exception appeared.

    This checks today's source-built production bundle, rather than the historical 0.0.40 AppImage or Cinnamon/Mint. Closing because the reported startup failure does not reproduce on current main. No specific historical fixing commit was established.

    Current production desktop successfully loads connected onboarding

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