pingdotgg / pingdotgg/t3code

[Bug]: 0.0.41-nightly desktop UI "T3 Code could not load." — t3code:// serves truncated asset (SyntaxError: Unexpected end of input)

Open
#11,523 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

accepted bug via-triage
Dominant language
TypeScript
Stars
23k
Forks
5.9k
Avg merge
11h 14m
Merged PRs (30d)
357

Description

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 T3-Code-0.0.41-nightly.20260913.1625-x86_64.AppImage (Linux x86_64), chmod +x it.

  2. Launch it, with the renderer console visible:

    ELECTRON_ENABLE_LOGGING=1 ./T3-Code.AppImage --no-sandbox --enable-logging=stderr
    
  3. The window opens, the backend becomes ready, then the UI is replaced by "T3 Code could not load."

  4. The renderer console reports a truncated module:

    [INFO:CONSOLE:2] "T3 Code failed to start. SyntaxError: Unexpected end of input", source: t3code://app/assets/index-DRGRqw-K.js (2)
    

Reproduces 100% of launches. I also tried to rule out local causes:

  • Clean Electron profile — launched with --user-data-dir pointed at an empty temp dir: same error (rules out a poisoned HTTP cache).
  • No FUSE / no AppImage — extracted the AppImage with --appimage-extract and ran the extracted t3code binary: same error (rules out squashfs/FUSE truncation).
Expected behavior

The bundled web client loads through t3code://app/... and the desktop reaches the normal UI, as it does on the previous nightly v0.0.41-nightly.20260912.1612.

Actual behavior

The bootstrap module is served truncated over the custom t3code:// protocol, so bootstrap.ts's import("./main").catch(showBootError) fails with SyntaxError: Unexpected end of input and paints the boot-error screen.

The same asset is intact in the package and over the backend HTTP URL, so the truncation is specific to the t3code://app serving path in this build:

  • Inside app.asar, apps/server/dist/client/assets/index-DRGRqw-K.js is present and valid — 7971 bytes, ends with //# sourceMappingURL=index-DRGRqw-K.js.map.
  • GET http://127.0.0.1:3773/assets/index-DRGRqw-K.js returns HTTP 200, content-length: 7971, valid JS (I can load the same URL in Chrome and the app reaches the UI/pairing screen).
  • The renderer, however, loads it via t3code://app/assets/index-DRGRqw-K.js and the module fails to parse.

This is a different symptom from #10719 (0.0.40, does not provide an export named 't' inter-chunk mismatch). The failure here is a parse error, which is what you get from a truncated/mangled body rather than a missing export.

Impact

Blocks work completely

Version or commit

v0.0.41-nightly.20260913.1625 (commit 2db675aeffd9)

Environment
  • Ubuntu 24.04.4 LTS, x86_64, Hyprland (Wayland)
  • T3 Code 0.0.41-nightly.20260913.1625, Linux AppImage (T3-Code-0.0.41-nightly.20260913.1625-x86_64.AppImage, 188486467 bytes)
  • Electron 44.1.0 / Chrome 152.0.7977.65
  • Also reproduced with the AppImage extracted to disk and with a fresh --user-data-dir
  • Previous nightly v0.0.41-nightly.20260912.1612 works on the same machine, same profile, same launch flags
Logs or stack traces
ELECTRON_ENABLE_LOGGING=1 ./T3-Code.AppImage --no-sandbox --enable-logging=stderr

Desktop log (backend comes up fine, window is created, then the renderer boot fails):

INFO (#3): runtime logging configured
INFO (#3): using update channel
INFO (#167): backend ready
INFO (#167): main window created
[INFO:CONSOLE:2] "T3 Code failed to start. SyntaxError: Unexpected end of input", source: t3code://app/assets/index-DRGRqw-K.js (2)
[INFO:CONSOLE:2] "T3 Code failed to start. SyntaxError: Failed to execute 'appendChild' on 'Node': Unexpected end of input", source: t3code://app/assets/index-DRGRqw-K.js (2)

Asset status compared across the two paths (broken build):

$ unzip-less read of app.asar    -> apps/server/dist/client/assets/index-DRGRqw-K.js  size 7971  (valid)
$ curl http://127.0.0.1:3773/assets/index-DRGRqw-K.js
  HTTP 200  content-length: 7971  content-type: text/javascript  (valid)
$ renderer via t3code://app/assets/index-DRGRqw-K.js
  SyntaxError: Unexpected end of input
Screenshots, recordings, or supporting files

Screenshot of the boot-error screen attached in the report ("T3 Code could not load." with the Reload button). Happy to provide the full --enable-logging=stderr capture if useful.

Workaround

Downgrade to the previous nightly, which launches normally:

  • v0.0.41-nightly.20260912.1612T3-Code-0.0.41-nightly.20260912.1612-x86_64.AppImage
    https://github.com/pingdotgg/t3code/releases/download/v0.0.41-nightly.20260912.1612/T3-Code-0.0.41-nightly.20260912.1612-x86_64.AppImage

Related: #10719 (0.0.40 desktop boot failure — same t3code://app serving path, different error).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in apps/desktop and inspect the t3code://app serving path, comparing its response for apps/server/dist/client/assets/index-DRGRqw-K.js with the intact 7,971-byte package asset and backend HTTP response. Read bootstrap.ts to understand the boot failure, then verify that the asset is served without truncation and the desktop reaches the normal UI on the affected nightly.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, typescript
Domain
build-system, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.