Skip to content

[Bug]: npm drops @t3code/t3-linux-x64 on glibc after any second install (bundled musl-only fff-bin fails the libc check) #22251

Closed

Description

@nerkza

Before submitting

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

Area

Build, CI, or release tooling

Steps to reproduce

On glibc Linux x64 (Debian 12, glibc 2.36), npm 12.2.0, Node 24.19.0:

mkdir repro && cd repro && echo '{"private":true}' > package.json
npm install t3@0.1.0           # added 2 packages; @t3code/t3-linux-x64 present; `npx t3 --version` prints t3 v0.1.0
npm install                    # removed 20 packages
ls node_modules/@t3code        # empty
npx t3 --version               # no longer runs (prints the "desktop app and release archives" message)

Same result with t3@0.0.45 (removes 10 packages). Any later npm command that reifies the tree (for example npm install some-other-package in the same project) also removes the platform package.

Expected behavior

@t3code/t3-linux-x64 stays installed on glibc Linux x64 across repeated npm install runs, as it does on the first install.

Actual behavior

The second reify retires @t3code/t3-linux-x64 and all of its bundled modules (npm install --loglevel silly shows reify mark retired [ '.../node_modules/@t3code/t3-linux-x64' ] followed by REMOVE lines for every bundled package).

Likely cause: the platform package's bundleDependencies (added for #11736) include both @ff-labs/fff-bin-linux-x64-gnu ("libc": ["glibc"]) and @ff-labs/fff-bin-linux-x64-musl ("libc": ["musl"]). After the first install the lockfile records the musl entry as:

"node_modules/@t3code/t3-linux-x64/node_modules/@ff-labs/fff-bin-linux-x64-musl": { "libc": ["musl"], "optional": true, "inBundle": true }

On the next reify npm rejects that optional entry on glibc, and the failure appears to propagate to its bundling parent, which is itself an optional dependency of t3, so npm drops the whole platform package. With t3@0.0.45, a direct npm install @t3code/t3-linux-x64@0.0.45 fails outright with EBADPLATFORM / notsup ... Actual libc: glibc.

Possible fixes: do not bundle the musl-only binary in the glibc platform package (or publish a separate linux-x64-musl platform package), or drop the libc field from bundled copies so npm does not evaluate them.

Impact

Major degradation or frequent failure

Version or commit

t3 0.1.0 (latest) and 0.1.1-nightly.20261016.3190; first seen with 0.0.45

Environment

Debian 12 (bookworm) x64, glibc 2.36, Node 24.19.0, npm 12.2.0, npm-installed t3 (not the desktop app)

Logs or stack traces

npm silly reify mark retired [ '/tmp/repro/node_modules/@t3code/t3-linux-x64' ]
npm silly REMOVE node_modules/@t3code/t3-linux-x64
npm silly REMOVE node_modules/@t3code/t3-linux-x64/node_modules/node-pty
npm silly REMOVE node_modules/@t3code/t3-linux-x64/node_modules/@ff-labs/fff-node
...

Workaround

Reinstall the platform package without saving it: npm install --no-save --force @t3code/t3-linux-x64@<same version as t3>. Keep the npm-installed t3 in its own project folder so unrelated npm installs do not reify it.

Activity

  1. nerkza commented on Oct 20, 2026

    @nerkza
    Author

    can't wait for that npm replacement theo!

  2. t3dotgg commented on Oct 21, 2026

    @t3dotgg
    Member

    Note

    🤖 Claude Opus 5.5 responding on behalf of Theo

    Thanks for the report. This is fixed on main in #20148. Please test on the nightly built from main on 2026-10-21, or on the next stable release. If the problem still occurs there, please open a new issue that links to this one, with your version and steps to reproduce it.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions