Skip to content

fix(server): bump node-pty to 1.2.0-beta.15 for linux-arm64 prebuild - #13748

Merged
Yash-Singh1 merged 1 commit into
pingdotgg:mainfrom
Ephraim-9:fix/node-pty-linux-arm64
Sep 26, 2026
Merged

Yash-Singh1 merged 1 commit into
pingdotgg:mainfrom
Ephraim-9:fix/node-pty-linux-arm64

Conversation

@Ephraim-9

@Ephraim-9 Ephraim-9 commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

What Changed

Bumps apps/server's node-pty from ^1.1.0 to ^1.2.0-beta.15 (+ lockfile). No code changes.

Why

Fixes #11556. node-pty@1.1.0 publishes no Linux prebuilds, so on linux-arm64 the released CLI runtime ships an empty node_modules/node-pty/prebuilds/ and the server exits at startup:

NodePtyModuleLoadError: Failed to load node-pty for linux-arm64.
  Error: Cannot find module './prebuilds/linux-arm64//pty.node'

1.2.0-beta.15 ships prebuilds/linux-arm64/pty.node (and linux-x64). scripts/build-cli-archive.ts already keeps the archive's own prebuilds/<platform>-<arch> directory and strips the rest, so no packaging change is needed. ^1.1.0 can never resolve to the prerelease on its own, hence the explicit bump.

This is the same change as #12406, which its author closed without merging.

Verification (real ARM64 hardware, not emulated)

Oracle Cloud Ampere A1 (aarch64), Ubuntu 20.04:

  • Installed t3@0.0.42 via install.sh + t3 service install: service crash-loops with the error above.
  • Replaced the runtime's node-pty with the stock 1.2.0-beta.15 tarball (no build/ directory, only prebuilds/linux-arm64 kept, matching what the archive script stages): service reaches Listening on http://127.0.0.1:3773 and stays active; a node-pty spawn of sh -c 'uname -m; stty size' with cols: 100, rows: 30 returns aarch64 / 30 100, exit 0.
  • In this branch on the same machine (Node 24.21.0, pnpm install --frozen-lockfile, no source build of node-pty present): vp test run src/terminal in apps/server: 3 files, 94 tests passed; tsc --noEmit: clean.

Not exercised: macOS, Windows, linux-x64.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Summary by CodeRabbit

  • Chores
    • Updated internal supporting software. No user-facing changes are included in this release.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 26, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at caee82f

Macroscope's review found this PR approvable — This is a narrowly scoped dependency and lockfile update that fixes the server's Linux ARM64 native prebuild availability without changing application source, product defaults, or static-analysis settings. Its runtime impact is limited to replacing the existing node-pty dependency.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Sep 26, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 2ead1d79-3b61-4d86-9beb-7b282048b10b

📥 Commits

Reviewing files that changed from the base of the PR and between 5d707bb and caee82f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1)
  • apps/server/package.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The server package updates its declared node-pty dependency range from ^1.1.0 to ^1.2.0-beta.15.

Changes

Server dependency update

Layer / File(s) Summary
Update node-pty version range
apps/server/package.json
The declared node-pty version range changes from ^1.1.0 to ^1.2.0-beta.15.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~5 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to caee8

No actionable merge-blocking issue is established; the update is mergeable after normal checks.

Architecture Summary

Architecture risk: 🔵 Low · up to caee8

The change affects 1 system.

Changed systems: apps/server

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — apps/server (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in apps/server/package.json: The node-pty dependency range changed from ^1.1.0 to ^1.2.0-beta.15.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the server dependency bump and its Linux ARM64 prebuild purpose.
Description check ✅ Passed The description explains what changed, why it changed, verification results, limitations, and checklist status. The UI checklist items are marked not applicable, which is sufficient for this non-UI ch…
Linked Issues check ✅ Passed The PR changes apps/server from node-pty ^1.1.0 to ^1.2.0-beta.15. The PR reports that this release contains linux-arm64 and linux-x64 prebuilds. The author also reports successful startup…
Out of Scope Changes check ✅ Passed The reviewed change updates only the apps/server node-pty dependency and its lockfile. These changes directly support the linux-arm64 startup fix in [#11556]. No unrelated source, configuration, o…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@Yash-Singh1
Yash-Singh1 merged commit 4923ff4 into pingdotgg:main Sep 26, 2026
21 of 22 checks passed
@Ephraim-9
Ephraim-9 deleted the fix/node-pty-linux-arm64 branch September 26, 2026 07:38
vedprakash2302 added a commit to vedprakash2302/Cody that referenced this pull request Sep 26, 2026
…ntime

node-pty 1.2.0-beta.15 (pingdotgg#13748) ships its Linux binary under
prebuilds/linux-<arch>/pty.node instead of build/Release/pty.node, so the
Windows packaging check rejected every embedded Linux CLI archive and the
Windows builds failed. The check now accepts either location, the same ones
the WSL startup probe already looks in.
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 26, 2026
## What's Changed
* feat(observability): write a server heap snapshot on SIGUSR2 by @t3dotgg in pingdotgg/t3code#13694
* perf(server): shutdown no longer rewrites every stopped session row by @t3dotgg in pingdotgg/t3code#13688
* perf(server): build the thread list snapshot without decoding it twice by @t3dotgg in pingdotgg/t3code#13693
* fix(client): slow servers finish loading the thread list instead of loading it twice by @t3dotgg in pingdotgg/t3code#13683
* perf(web): hidden terminal drawers no longer keep full thread history in memory by @t3dotgg in pingdotgg/t3code#13686
* perf(server): per-thread settlement and PR checks no longer rebuild the whole thread list by @t3dotgg in pingdotgg/t3code#13691
* fix(mobile): running threads open at the latest message by @AKolenda in pingdotgg/t3code#13530
* feat(observability): record event loop stalls in the server trace by @t3dotgg in pingdotgg/t3code#13697
* perf(server): stop re-running git for every project each minute by @t3dotgg in pingdotgg/t3code#13689
* fix(usage): hide the Cursor keychain prompt when Cursor isn't set up by @Gigioxx in pingdotgg/t3code#13714
* feat(web): add chat width setting for wide screens by @otavio in pingdotgg/t3code#11594
* fix(opencode): accept v2 serve ready line when spawning server by @shirishpothi in pingdotgg/t3code#13651
* fix(editors): stop treating the agy CLI as the Antigravity IDE by @ishaanko in pingdotgg/t3code#7079
* fix(web): make the empty workspace draggable on desktop by @otavio in pingdotgg/t3code#13713
* fix(server): installed editors no longer vanish when discovery is slow by @bfowler in pingdotgg/t3code#13669
* fix(git): exclude SSH ports from provider URLs by @GaMeRaM in pingdotgg/t3code#12537
* fix(web): Mod+B bolds on non-Latin layouts by @ValeraZSD in pingdotgg/t3code#13409
* fix(server): prune expired replay-protection files from the secrets directory by @t3dotgg in pingdotgg/t3code#13695
* fix(web): terminal links drop a trailing colon by @ValeraZSD in pingdotgg/t3code#13408
* fix(server): bump node-pty to 1.2.0-beta.15 for linux-arm64 prebuild by @Ephraim-9 in pingdotgg/t3code#13748
* Show a focus ring on sidebar thread and draft rows by @ryanilano in pingdotgg/t3code#13344
* fix(mobile): keep composer within folded screen after resume by @PixPMusic in pingdotgg/t3code#13310
* fix(server): let OpenCode generate session titles by @macodev00 in pingdotgg/t3code#13368
* fix(server): let Antigravity inspect unsupported files by path by @Bil0000 in pingdotgg/t3code#13339
* fix(mobile): link URLs with ports and single-label hosts by @Yash-Singh1 in pingdotgg/t3code#13795
* feat(web): add keyboard navigation for usage by @tris203 in pingdotgg/t3code#10158
* perf(observability): stop writing empty spans on spawns, projected events, and idle polls by @t3dotgg in pingdotgg/t3code#13756
* perf(server): opening Diagnostics no longer loads the whole trace ring into memory by @t3dotgg in pingdotgg/t3code#13763
* perf(clients): sort projects and settled threads without re-parsing dates per comparison by @t3dotgg in pingdotgg/t3code#13759
* fix(observability): the renderer trace proxy stops tracing itself by @t3dotgg in pingdotgg/t3code#13761
* perf(server): background sweeps only read threads that can still settle by @t3dotgg in pingdotgg/t3code#13765
* perf(clients): saving the thread list cache no longer freezes the UI by @t3dotgg in pingdotgg/t3code#13767
* perf(server): cut idle wakeups from the Connect relay and session reaper by @t3dotgg in pingdotgg/t3code#13774
* fix(mobile): keep trailing underscores and tildes in autolinked URLs by @Yash-Singh1 in pingdotgg/t3code#13807
* fix(web): queued messages send while their thread is not open by @t3dotgg in pingdotgg/t3code#13764
* fix(server): background git status fetches no longer fill the disk with failed repacks by @t3dotgg in pingdotgg/t3code#13812
* fix(mobile): thread list shows the pull request icon instead of # by @flamboh in pingdotgg/t3code#13742
* fix(accessibility): correct control announcements and sidebar traversal by @blinding-pixels in pingdotgg/t3code#13491
* fix(usage): tolerate newer provider variants by @tris203 in pingdotgg/t3code#10076
* fix(usage): omit Cursor warning when no login is saved by @tris203 in pingdotgg/t3code#13820
* fix(usage): identify client version mismatches by @tris203 in pingdotgg/t3code#8208
* fix(web): stop mistaking offline servers for updates by @tris203 in pingdotgg/t3code#13083
* test(usage): assert contract mismatch details by @Yash-Singh1 in pingdotgg/t3code#13861
* fix(build): validate Linux node-pty prebuilds in Windows artifacts by @Yash-Singh1 in pingdotgg/t3code#13867

## New Contributors
* @otavio made their first contribution in pingdotgg/t3code#11594
* @shirishpothi made their first contribution in pingdotgg/t3code#13651
* @bfowler made their first contribution in pingdotgg/t3code#13669
* @GaMeRaM made their first contribution in pingdotgg/t3code#12537
* @ValeraZSD made their first contribution in pingdotgg/t3code#13409
* @Ephraim-9 made their first contribution in pingdotgg/t3code#13748
* @ryanilano made their first contribution in pingdotgg/t3code#13344
* @macodev00 made their first contribution in pingdotgg/t3code#13368
* @blinding-pixels made their first contribution in pingdotgg/t3code#13491

**Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260926.2282...v0.0.43-nightly.20260926.2318

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260926.2318
sandscooling pushed a commit to sandscooling/t3code that referenced this pull request Sep 27, 2026
node-pty 1.2.0-beta.15 (upstream pingdotgg#13748) reports pid 0 at spawn on
Windows until ConPTY's data pipe connects. The terminal manager reads
the pid right after spawn, so every snapshot failed the contract's
pid > 0 check and the terminal panel never attached. 1.1.0 knows the
pid synchronously. Drop the pin when upstream fixes the Windows pid.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: t3 server fails to start on linux-arm64 — node-pty has no prebuild and no working source-build fallback

2 participants