Skip to content

fix(release): ship Linux x64 PTY prebuild - #1224

Open
Altairpaca wants to merge 1 commit into
code-yeongyu:mainfrom
Altairpaca:campaign/1193-linux-pty-package
Open

fix(release): ship Linux x64 PTY prebuild#1224
Altairpaca wants to merge 1 commit into
code-yeongyu:mainfrom
Altairpaca:campaign/1193-linux-pty-package

Conversation

@Altairpaca

@Altairpaca Altairpaca commented Aug 31, 2026

Copy link
Copy Markdown

Problem

The Linux x64 PTY addon is built in CI but was omitted from the published Senpi npm tarball, causing Linux installs to fall back to the pipe backend.

Root cause

The native workflow staged native/prebuilds/<host>/... but the publish workflow did not consume the artifact, and the pack guard treated a missing host prebuild as optional.

Invariant

Publish-only packaging must preserve the loader-relative native/prebuilds/<host>/ path and must fail before publication when the required Linux x64 artifact is absent. Ordinary releases and non-required platform targets retain pipe fallback.

Changes

  • Made native prebuilds callable through a reusable workflow.
  • Preserved the native/ directory level across artifact upload and download.
  • Runs the native matrix only for publish-only releases and requires linux-x64 during publish validation.
  • Added workflow, staging, pack, and tracker coverage.

RED -> GREEN

RED: the required-target pack test accepted a missing Linux x64 prebuild.
GREEN: packaging, staging, and workflow suites pass; 25 tests passed.

Real-surface verification

Disposable real npm pack --dry-run --json QA confirmed node_modules/@earendil-works/pi-pty/native/prebuilds/linux-x64/senpi_pty.linux-x64.node; strict missing-target QA rejected publication before registry access.

Regression coverage

Added the #1193 required-target cases, upload-root/download-destination path contract, optional pipe-fallback preservation, and workflow ordering assertions.

Risks / residuals

Native binary authenticity and Linux execution require the GitHub native build runner; local QA used a disposable placeholder only for tarball path verification. Full release build is host-limited because this machine runs Node 22 while the repository requires Node 24.

Non-goals

No changes to PTY runtime fallback behavior, native Rust implementation, package lockfiles, or normal release publication.

Fixes #1193

Fixes code-yeongyu#1193

Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Linux x64 PTY prebuild is built in CI but omitted from npm package

1 participant