fix(desktop): exclude opposite macOS pty prebuilds - #9240

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning
Sep 2, 2026
Merged

fix(desktop): exclude opposite macOS pty prebuilds#9240
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning

Conversation

@extoci

@extociextoci commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem:
The arm64 macOS artifact includes node-pty darwin-x64 pty.node and spawn-helper files, causing macOS to detect Intel-only nested components.

Fix:
Pass the target architecture into the desktop packaging config and exclude only the opposite Darwin node-pty prebuilds for single-architecture packages. Universal builds retain both architectures, and Intel macOS support remains unchanged.

Tests:

  • vp test run scripts/build-desktop-artifact.test.ts — 66 passed
  • Targeted formatting and type-aware lint passed
  • Exact GitHub arm64 release artifact was independently audited; filtered node-pty tree loaded and spawned /bin/sh successfully on Apple silicon

Bundle impact:
The audited arm64 app loses 101,072 uncompressed bytes (~98.7 KiB). The two entries occupied 31,045 compressed bytes (~30.3 KiB) in the ZIP, plus archive metadata.

Model/harness: GPT-5.6 / Codex harness.


Note

Low Risk
Packaging-only change scoped to macOS file exclusions in the desktop artifact script; runtime app logic is unchanged, though misconfigured callers that omit arch would still bundle both prebuilds.

Overview
Single-architecture macOS desktop packages were still shipping both Darwin node-pty prebuilds, which led macOS to treat Intel-only nested binaries as present in arm64 builds.

This PR adds resolveMacFileExclusions, which keeps the existing Windows-related exclusions and, for arm64 or x64 targets, adds an electron-builder exclusion for the non-targetdarwin-* prebuild tree. Universal builds (or callers that omit arch) keep both Darwin prebuilds, matching prior behavior.

The target arch is passed into createBuildConfig from buildDesktopArtifact so staged package.jsonbuild.files uses the resolved list instead of the static MAC_FILE_EXCLUSIONS alone.

Reviewed by Cursor Bugbot for commit 2d9596e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Exclude unused Darwin node-pty prebuilds from single-architecture macOS desktop builds

  • Adds resolveMacFileExclusions in build-desktop-artifact.ts which drops the opposite-architecture Darwin node-pty prebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified builds
  • Threads an architecture parameter through createBuildConfig and passes options.arch from buildDesktopArtifact so the exclusion resolver receives the requested target
  • Behavioral Change: single-architecture macOS artifacts now ship only the matching Darwin node-pty prebuild instead of both; universal and arch-unspecified builds are unchanged

Macroscope summarized 2d9596e.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 2, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@macroscopeapp

macroscopeappBot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2d9596e

Macroscope's review found this PR approvable — This is a focused macOS packaging fix that removes unused opposite-architecture node-pty binaries from single-architecture artifacts while preserving universal builds and application runtime logic. The change is small, localized, and has no product-default, security, schema, or infrastructure implications.

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

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:35

Dismissing prior approval to re-evaluate 1ccaa2e

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci

Copy link
Copy Markdown
ContributorAuthor

Release Smoke is the only failing required check. It fails before any desktop packaging step while regenerating the temporary lockfile in scripts/release-smoke.ts: ERR_PNPM_UNUSED_PATCH for expo-sharing@57.0.16. The same command reproduces locally from this clean branch, and the PR diff contains no mobile, patch, or lockfile changes; the current registry also resolves expo-sharing 57.0.17, which does not match the existing 57.0.16 patch. I left this PR scoped to the macOS packaging fix. Coded on behalf of me — GPT-5.6 / Codex harness.

@extoci

Copy link
Copy Markdown
ContributorAuthor

Update: I verified the required Release Smoke failure was caused by the existing expo-sharing patch being version-specific while its dependency range allowed 57.0.17. The final PR now includes only a two-line specifier/lockfile alignment to keep the already-patched 57.0.16 behavior; the full smoke script passes locally. Coded on behalf of me — GPT-5.6 / Codex harness.

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:47

Dismissing prior approval to re-evaluate 817f596

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci
extociforce-pushed the t3code/investigate-intel-app-warning branch from 817f596 to 2d9596eCompareSeptember 2, 2026 19:55
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 19:55

Dismissing prior approval to re-evaluate 2d9596e

@extoci

extoci commented Sep 2, 2026

Copy link
Copy Markdown
ContributorAuthor

Correction after rebasing onto current main: the Expo Sharing patch/version fix is already present upstream and is no longer part of this PR. The rebased branch now contains only the macOS desktop packaging change (+19/-1); the earlier CI note referred to the pre-rebase state. Coded on behalf of me — GPT-5.6 / Codex harness.

@maria-rcks
maria-rcks merged commit 8d5b712 into pingdotgg:mainSep 2, 2026
26 checks passed
@mackinleysmith

Copy link
Copy Markdown
Contributor

hey @maria-rcks, do you think we could rebase or cherry pick this into the t3code/rebuild-mobile-app-swift branch so i can get the tests passing on #9071 please? thank you kindly!

github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 2, 2026
## What's Changed
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in pingdotgg/t3code#8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in pingdotgg/t3code#9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in pingdotgg/t3code#9240
* feat(web): add copy path button to diff headers by @ipanasenko in pingdotgg/t3code#2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in pingdotgg/t3code#9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in pingdotgg/t3code#9217
* fix(chat): show single tool calls without summaries by @maria-rcks in pingdotgg/t3code#9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in pingdotgg/t3code#9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in pingdotgg/t3code#9272
**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1260...v0.0.39-nightly.20260902.1261
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1261
buluma added a commit to buluma/helmcode that referenced this pull request Sep 2, 2026
… packages (#53)
node-pty ships prebuilt pty.node/spawn-helper binaries for both darwin-x64
and darwin-arm64 in the same package. A single-architecture mac build only
loads its own arch's prebuild, but electron-builder's static files list had
no way to know that, so the opposite-arch prebuild rode along and macOS
flagged the arm64 app as containing Intel-only nested binaries.
Add resolveMacFileExclusions(arch), thread arch into createBuildConfig, and
scope the exclusion to platform === "mac" so universal builds (and any
caller that omits arch) keep both prebuilds unchanged. Windows ships the
same opposite-arch bloat but is out of scope here.
Ported from pingdotgg/t3code#9240.
Co-authored-by: Michael Buluma <1452922+buluma@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@extoci@mackinleysmith@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(desktop): exclude opposite macOS pty prebuilds - #9240

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning
Sep 2, 2026
Merged

fix(desktop): exclude opposite macOS pty prebuilds#9240
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning

Conversation

@extoci

@extociextoci commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem:
The arm64 macOS artifact includes node-pty darwin-x64 pty.node and spawn-helper files, causing macOS to detect Intel-only nested components.

Fix:
Pass the target architecture into the desktop packaging config and exclude only the opposite Darwin node-pty prebuilds for single-architecture packages. Universal builds retain both architectures, and Intel macOS support remains unchanged.

Tests:

  • vp test run scripts/build-desktop-artifact.test.ts — 66 passed
  • Targeted formatting and type-aware lint passed
  • Exact GitHub arm64 release artifact was independently audited; filtered node-pty tree loaded and spawned /bin/sh successfully on Apple silicon

Bundle impact:
The audited arm64 app loses 101,072 uncompressed bytes (~98.7 KiB). The two entries occupied 31,045 compressed bytes (~30.3 KiB) in the ZIP, plus archive metadata.

Model/harness: GPT-5.6 / Codex harness.


Note

Low Risk
Packaging-only change scoped to macOS file exclusions in the desktop artifact script; runtime app logic is unchanged, though misconfigured callers that omit arch would still bundle both prebuilds.

Overview
Single-architecture macOS desktop packages were still shipping both Darwin node-pty prebuilds, which led macOS to treat Intel-only nested binaries as present in arm64 builds.

This PR adds resolveMacFileExclusions, which keeps the existing Windows-related exclusions and, for arm64 or x64 targets, adds an electron-builder exclusion for the non-targetdarwin-* prebuild tree. Universal builds (or callers that omit arch) keep both Darwin prebuilds, matching prior behavior.

The target arch is passed into createBuildConfig from buildDesktopArtifact so staged package.jsonbuild.files uses the resolved list instead of the static MAC_FILE_EXCLUSIONS alone.

Reviewed by Cursor Bugbot for commit 2d9596e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Exclude unused Darwin node-pty prebuilds from single-architecture macOS desktop builds

  • Adds resolveMacFileExclusions in build-desktop-artifact.ts which drops the opposite-architecture Darwin node-pty prebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified builds
  • Threads an architecture parameter through createBuildConfig and passes options.arch from buildDesktopArtifact so the exclusion resolver receives the requested target
  • Behavioral Change: single-architecture macOS artifacts now ship only the matching Darwin node-pty prebuild instead of both; universal and arch-unspecified builds are unchanged

Macroscope summarized 2d9596e.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 2, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@macroscopeapp

macroscopeappBot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2d9596e

Macroscope's review found this PR approvable — This is a focused macOS packaging fix that removes unused opposite-architecture node-pty binaries from single-architecture artifacts while preserving universal builds and application runtime logic. The change is small, localized, and has no product-default, security, schema, or infrastructure implications.

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

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:35

Dismissing prior approval to re-evaluate 1ccaa2e

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci

Copy link
Copy Markdown
ContributorAuthor

Release Smoke is the only failing required check. It fails before any desktop packaging step while regenerating the temporary lockfile in scripts/release-smoke.ts: ERR_PNPM_UNUSED_PATCH for expo-sharing@57.0.16. The same command reproduces locally from this clean branch, and the PR diff contains no mobile, patch, or lockfile changes; the current registry also resolves expo-sharing 57.0.17, which does not match the existing 57.0.16 patch. I left this PR scoped to the macOS packaging fix. Coded on behalf of me — GPT-5.6 / Codex harness.

@extoci

Copy link
Copy Markdown
ContributorAuthor

Update: I verified the required Release Smoke failure was caused by the existing expo-sharing patch being version-specific while its dependency range allowed 57.0.17. The final PR now includes only a two-line specifier/lockfile alignment to keep the already-patched 57.0.16 behavior; the full smoke script passes locally. Coded on behalf of me — GPT-5.6 / Codex harness.

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:47

Dismissing prior approval to re-evaluate 817f596

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci
extociforce-pushed the t3code/investigate-intel-app-warning branch from 817f596 to 2d9596eCompareSeptember 2, 2026 19:55
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 19:55

Dismissing prior approval to re-evaluate 2d9596e

@extoci

extoci commented Sep 2, 2026

Copy link
Copy Markdown
ContributorAuthor

Correction after rebasing onto current main: the Expo Sharing patch/version fix is already present upstream and is no longer part of this PR. The rebased branch now contains only the macOS desktop packaging change (+19/-1); the earlier CI note referred to the pre-rebase state. Coded on behalf of me — GPT-5.6 / Codex harness.

@maria-rcks
maria-rcks merged commit 8d5b712 into pingdotgg:mainSep 2, 2026
26 checks passed
@mackinleysmith

Copy link
Copy Markdown
Contributor

hey @maria-rcks, do you think we could rebase or cherry pick this into the t3code/rebuild-mobile-app-swift branch so i can get the tests passing on #9071 please? thank you kindly!

github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 2, 2026
## What's Changed
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in pingdotgg/t3code#8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in pingdotgg/t3code#9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in pingdotgg/t3code#9240
* feat(web): add copy path button to diff headers by @ipanasenko in pingdotgg/t3code#2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in pingdotgg/t3code#9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in pingdotgg/t3code#9217
* fix(chat): show single tool calls without summaries by @maria-rcks in pingdotgg/t3code#9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in pingdotgg/t3code#9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in pingdotgg/t3code#9272
**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1260...v0.0.39-nightly.20260902.1261
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1261
buluma added a commit to buluma/helmcode that referenced this pull request Sep 2, 2026
… packages (#53)
node-pty ships prebuilt pty.node/spawn-helper binaries for both darwin-x64
and darwin-arm64 in the same package. A single-architecture mac build only
loads its own arch's prebuild, but electron-builder's static files list had
no way to know that, so the opposite-arch prebuild rode along and macOS
flagged the arm64 app as containing Intel-only nested binaries.
Add resolveMacFileExclusions(arch), thread arch into createBuildConfig, and
scope the exclusion to platform === "mac" so universal builds (and any
caller that omits arch) keep both prebuilds unchanged. Windows ships the
same opposite-arch bloat but is out of scope here.
Ported from pingdotgg/t3code#9240.
Co-authored-by: Michael Buluma <1452922+buluma@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@extoci@mackinleysmith@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(desktop): exclude opposite macOS pty prebuilds - #9240

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning
Sep 2, 2026
Merged

fix(desktop): exclude opposite macOS pty prebuilds#9240
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning

Conversation

@extoci

@extociextoci commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem:
The arm64 macOS artifact includes node-pty darwin-x64 pty.node and spawn-helper files, causing macOS to detect Intel-only nested components.

Fix:
Pass the target architecture into the desktop packaging config and exclude only the opposite Darwin node-pty prebuilds for single-architecture packages. Universal builds retain both architectures, and Intel macOS support remains unchanged.

Tests:

  • vp test run scripts/build-desktop-artifact.test.ts — 66 passed
  • Targeted formatting and type-aware lint passed
  • Exact GitHub arm64 release artifact was independently audited; filtered node-pty tree loaded and spawned /bin/sh successfully on Apple silicon

Bundle impact:
The audited arm64 app loses 101,072 uncompressed bytes (~98.7 KiB). The two entries occupied 31,045 compressed bytes (~30.3 KiB) in the ZIP, plus archive metadata.

Model/harness: GPT-5.6 / Codex harness.


Note

Low Risk
Packaging-only change scoped to macOS file exclusions in the desktop artifact script; runtime app logic is unchanged, though misconfigured callers that omit arch would still bundle both prebuilds.

Overview
Single-architecture macOS desktop packages were still shipping both Darwin node-pty prebuilds, which led macOS to treat Intel-only nested binaries as present in arm64 builds.

This PR adds resolveMacFileExclusions, which keeps the existing Windows-related exclusions and, for arm64 or x64 targets, adds an electron-builder exclusion for the non-targetdarwin-* prebuild tree. Universal builds (or callers that omit arch) keep both Darwin prebuilds, matching prior behavior.

The target arch is passed into createBuildConfig from buildDesktopArtifact so staged package.jsonbuild.files uses the resolved list instead of the static MAC_FILE_EXCLUSIONS alone.

Reviewed by Cursor Bugbot for commit 2d9596e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Exclude unused Darwin node-pty prebuilds from single-architecture macOS desktop builds

  • Adds resolveMacFileExclusions in build-desktop-artifact.ts which drops the opposite-architecture Darwin node-pty prebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified builds
  • Threads an architecture parameter through createBuildConfig and passes options.arch from buildDesktopArtifact so the exclusion resolver receives the requested target
  • Behavioral Change: single-architecture macOS artifacts now ship only the matching Darwin node-pty prebuild instead of both; universal and arch-unspecified builds are unchanged

Macroscope summarized 2d9596e.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 2, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@macroscopeapp

macroscopeappBot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2d9596e

Macroscope's review found this PR approvable — This is a focused macOS packaging fix that removes unused opposite-architecture node-pty binaries from single-architecture artifacts while preserving universal builds and application runtime logic. The change is small, localized, and has no product-default, security, schema, or infrastructure implications.

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

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:35

Dismissing prior approval to re-evaluate 1ccaa2e

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci

Copy link
Copy Markdown
ContributorAuthor

Release Smoke is the only failing required check. It fails before any desktop packaging step while regenerating the temporary lockfile in scripts/release-smoke.ts: ERR_PNPM_UNUSED_PATCH for expo-sharing@57.0.16. The same command reproduces locally from this clean branch, and the PR diff contains no mobile, patch, or lockfile changes; the current registry also resolves expo-sharing 57.0.17, which does not match the existing 57.0.16 patch. I left this PR scoped to the macOS packaging fix. Coded on behalf of me — GPT-5.6 / Codex harness.

@extoci

Copy link
Copy Markdown
ContributorAuthor

Update: I verified the required Release Smoke failure was caused by the existing expo-sharing patch being version-specific while its dependency range allowed 57.0.17. The final PR now includes only a two-line specifier/lockfile alignment to keep the already-patched 57.0.16 behavior; the full smoke script passes locally. Coded on behalf of me — GPT-5.6 / Codex harness.

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:47

Dismissing prior approval to re-evaluate 817f596

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci
extociforce-pushed the t3code/investigate-intel-app-warning branch from 817f596 to 2d9596eCompareSeptember 2, 2026 19:55
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 19:55

Dismissing prior approval to re-evaluate 2d9596e

@extoci

extoci commented Sep 2, 2026

Copy link
Copy Markdown
ContributorAuthor

Correction after rebasing onto current main: the Expo Sharing patch/version fix is already present upstream and is no longer part of this PR. The rebased branch now contains only the macOS desktop packaging change (+19/-1); the earlier CI note referred to the pre-rebase state. Coded on behalf of me — GPT-5.6 / Codex harness.

@maria-rcks
maria-rcks merged commit 8d5b712 into pingdotgg:mainSep 2, 2026
26 checks passed
@mackinleysmith

Copy link
Copy Markdown
Contributor

hey @maria-rcks, do you think we could rebase or cherry pick this into the t3code/rebuild-mobile-app-swift branch so i can get the tests passing on #9071 please? thank you kindly!

github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 2, 2026
## What's Changed
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in pingdotgg/t3code#8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in pingdotgg/t3code#9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in pingdotgg/t3code#9240
* feat(web): add copy path button to diff headers by @ipanasenko in pingdotgg/t3code#2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in pingdotgg/t3code#9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in pingdotgg/t3code#9217
* fix(chat): show single tool calls without summaries by @maria-rcks in pingdotgg/t3code#9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in pingdotgg/t3code#9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in pingdotgg/t3code#9272
**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1260...v0.0.39-nightly.20260902.1261
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1261
buluma added a commit to buluma/helmcode that referenced this pull request Sep 2, 2026
… packages (#53)
node-pty ships prebuilt pty.node/spawn-helper binaries for both darwin-x64
and darwin-arm64 in the same package. A single-architecture mac build only
loads its own arch's prebuild, but electron-builder's static files list had
no way to know that, so the opposite-arch prebuild rode along and macOS
flagged the arm64 app as containing Intel-only nested binaries.
Add resolveMacFileExclusions(arch), thread arch into createBuildConfig, and
scope the exclusion to platform === "mac" so universal builds (and any
caller that omits arch) keep both prebuilds unchanged. Windows ships the
same opposite-arch bloat but is out of scope here.
Ported from pingdotgg/t3code#9240.
Co-authored-by: Michael Buluma <1452922+buluma@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@extoci@mackinleysmith@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(desktop): exclude opposite macOS pty prebuilds - #9240

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning
Sep 2, 2026
Merged

fix(desktop): exclude opposite macOS pty prebuilds#9240
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning

Conversation

@extoci

@extociextoci commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem:
The arm64 macOS artifact includes node-pty darwin-x64 pty.node and spawn-helper files, causing macOS to detect Intel-only nested components.

Fix:
Pass the target architecture into the desktop packaging config and exclude only the opposite Darwin node-pty prebuilds for single-architecture packages. Universal builds retain both architectures, and Intel macOS support remains unchanged.

Tests:

  • vp test run scripts/build-desktop-artifact.test.ts — 66 passed
  • Targeted formatting and type-aware lint passed
  • Exact GitHub arm64 release artifact was independently audited; filtered node-pty tree loaded and spawned /bin/sh successfully on Apple silicon

Bundle impact:
The audited arm64 app loses 101,072 uncompressed bytes (~98.7 KiB). The two entries occupied 31,045 compressed bytes (~30.3 KiB) in the ZIP, plus archive metadata.

Model/harness: GPT-5.6 / Codex harness.


Note

Low Risk
Packaging-only change scoped to macOS file exclusions in the desktop artifact script; runtime app logic is unchanged, though misconfigured callers that omit arch would still bundle both prebuilds.

Overview
Single-architecture macOS desktop packages were still shipping both Darwin node-pty prebuilds, which led macOS to treat Intel-only nested binaries as present in arm64 builds.

This PR adds resolveMacFileExclusions, which keeps the existing Windows-related exclusions and, for arm64 or x64 targets, adds an electron-builder exclusion for the non-targetdarwin-* prebuild tree. Universal builds (or callers that omit arch) keep both Darwin prebuilds, matching prior behavior.

The target arch is passed into createBuildConfig from buildDesktopArtifact so staged package.jsonbuild.files uses the resolved list instead of the static MAC_FILE_EXCLUSIONS alone.

Reviewed by Cursor Bugbot for commit 2d9596e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Exclude unused Darwin node-pty prebuilds from single-architecture macOS desktop builds

  • Adds resolveMacFileExclusions in build-desktop-artifact.ts which drops the opposite-architecture Darwin node-pty prebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified builds
  • Threads an architecture parameter through createBuildConfig and passes options.arch from buildDesktopArtifact so the exclusion resolver receives the requested target
  • Behavioral Change: single-architecture macOS artifacts now ship only the matching Darwin node-pty prebuild instead of both; universal and arch-unspecified builds are unchanged

Macroscope summarized 2d9596e.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 2, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@macroscopeapp

macroscopeappBot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2d9596e

Macroscope's review found this PR approvable — This is a focused macOS packaging fix that removes unused opposite-architecture node-pty binaries from single-architecture artifacts while preserving universal builds and application runtime logic. The change is small, localized, and has no product-default, security, schema, or infrastructure implications.

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

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:35

Dismissing prior approval to re-evaluate 1ccaa2e

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci

Copy link
Copy Markdown
ContributorAuthor

Release Smoke is the only failing required check. It fails before any desktop packaging step while regenerating the temporary lockfile in scripts/release-smoke.ts: ERR_PNPM_UNUSED_PATCH for expo-sharing@57.0.16. The same command reproduces locally from this clean branch, and the PR diff contains no mobile, patch, or lockfile changes; the current registry also resolves expo-sharing 57.0.17, which does not match the existing 57.0.16 patch. I left this PR scoped to the macOS packaging fix. Coded on behalf of me — GPT-5.6 / Codex harness.

@extoci

Copy link
Copy Markdown
ContributorAuthor

Update: I verified the required Release Smoke failure was caused by the existing expo-sharing patch being version-specific while its dependency range allowed 57.0.17. The final PR now includes only a two-line specifier/lockfile alignment to keep the already-patched 57.0.16 behavior; the full smoke script passes locally. Coded on behalf of me — GPT-5.6 / Codex harness.

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:47

Dismissing prior approval to re-evaluate 817f596

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci
extociforce-pushed the t3code/investigate-intel-app-warning branch from 817f596 to 2d9596eCompareSeptember 2, 2026 19:55
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 19:55

Dismissing prior approval to re-evaluate 2d9596e

@extoci

extoci commented Sep 2, 2026

Copy link
Copy Markdown
ContributorAuthor

Correction after rebasing onto current main: the Expo Sharing patch/version fix is already present upstream and is no longer part of this PR. The rebased branch now contains only the macOS desktop packaging change (+19/-1); the earlier CI note referred to the pre-rebase state. Coded on behalf of me — GPT-5.6 / Codex harness.

@maria-rcks
maria-rcks merged commit 8d5b712 into pingdotgg:mainSep 2, 2026
26 checks passed
@mackinleysmith

Copy link
Copy Markdown
Contributor

hey @maria-rcks, do you think we could rebase or cherry pick this into the t3code/rebuild-mobile-app-swift branch so i can get the tests passing on #9071 please? thank you kindly!

github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 2, 2026
## What's Changed
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in pingdotgg/t3code#8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in pingdotgg/t3code#9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in pingdotgg/t3code#9240
* feat(web): add copy path button to diff headers by @ipanasenko in pingdotgg/t3code#2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in pingdotgg/t3code#9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in pingdotgg/t3code#9217
* fix(chat): show single tool calls without summaries by @maria-rcks in pingdotgg/t3code#9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in pingdotgg/t3code#9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in pingdotgg/t3code#9272
**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1260...v0.0.39-nightly.20260902.1261
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1261
buluma added a commit to buluma/helmcode that referenced this pull request Sep 2, 2026
… packages (#53)
node-pty ships prebuilt pty.node/spawn-helper binaries for both darwin-x64
and darwin-arm64 in the same package. A single-architecture mac build only
loads its own arch's prebuild, but electron-builder's static files list had
no way to know that, so the opposite-arch prebuild rode along and macOS
flagged the arm64 app as containing Intel-only nested binaries.
Add resolveMacFileExclusions(arch), thread arch into createBuildConfig, and
scope the exclusion to platform === "mac" so universal builds (and any
caller that omits arch) keep both prebuilds unchanged. Windows ships the
same opposite-arch bloat but is out of scope here.
Ported from pingdotgg/t3code#9240.
Co-authored-by: Michael Buluma <1452922+buluma@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@extoci@mackinleysmith@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(desktop): exclude opposite macOS pty prebuilds - #9240

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning
Sep 2, 2026
Merged

fix(desktop): exclude opposite macOS pty prebuilds#9240
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning

Conversation

@extoci

@extociextoci commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem:
The arm64 macOS artifact includes node-pty darwin-x64 pty.node and spawn-helper files, causing macOS to detect Intel-only nested components.

Fix:
Pass the target architecture into the desktop packaging config and exclude only the opposite Darwin node-pty prebuilds for single-architecture packages. Universal builds retain both architectures, and Intel macOS support remains unchanged.

Tests:

  • vp test run scripts/build-desktop-artifact.test.ts — 66 passed
  • Targeted formatting and type-aware lint passed
  • Exact GitHub arm64 release artifact was independently audited; filtered node-pty tree loaded and spawned /bin/sh successfully on Apple silicon

Bundle impact:
The audited arm64 app loses 101,072 uncompressed bytes (~98.7 KiB). The two entries occupied 31,045 compressed bytes (~30.3 KiB) in the ZIP, plus archive metadata.

Model/harness: GPT-5.6 / Codex harness.


Note

Low Risk
Packaging-only change scoped to macOS file exclusions in the desktop artifact script; runtime app logic is unchanged, though misconfigured callers that omit arch would still bundle both prebuilds.

Overview
Single-architecture macOS desktop packages were still shipping both Darwin node-pty prebuilds, which led macOS to treat Intel-only nested binaries as present in arm64 builds.

This PR adds resolveMacFileExclusions, which keeps the existing Windows-related exclusions and, for arm64 or x64 targets, adds an electron-builder exclusion for the non-targetdarwin-* prebuild tree. Universal builds (or callers that omit arch) keep both Darwin prebuilds, matching prior behavior.

The target arch is passed into createBuildConfig from buildDesktopArtifact so staged package.jsonbuild.files uses the resolved list instead of the static MAC_FILE_EXCLUSIONS alone.

Reviewed by Cursor Bugbot for commit 2d9596e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Exclude unused Darwin node-pty prebuilds from single-architecture macOS desktop builds

  • Adds resolveMacFileExclusions in build-desktop-artifact.ts which drops the opposite-architecture Darwin node-pty prebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified builds
  • Threads an architecture parameter through createBuildConfig and passes options.arch from buildDesktopArtifact so the exclusion resolver receives the requested target
  • Behavioral Change: single-architecture macOS artifacts now ship only the matching Darwin node-pty prebuild instead of both; universal and arch-unspecified builds are unchanged

Macroscope summarized 2d9596e.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 2, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@macroscopeapp

macroscopeappBot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2d9596e

Macroscope's review found this PR approvable — This is a focused macOS packaging fix that removes unused opposite-architecture node-pty binaries from single-architecture artifacts while preserving universal builds and application runtime logic. The change is small, localized, and has no product-default, security, schema, or infrastructure implications.

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

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:35

Dismissing prior approval to re-evaluate 1ccaa2e

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci

Copy link
Copy Markdown
ContributorAuthor

Release Smoke is the only failing required check. It fails before any desktop packaging step while regenerating the temporary lockfile in scripts/release-smoke.ts: ERR_PNPM_UNUSED_PATCH for expo-sharing@57.0.16. The same command reproduces locally from this clean branch, and the PR diff contains no mobile, patch, or lockfile changes; the current registry also resolves expo-sharing 57.0.17, which does not match the existing 57.0.16 patch. I left this PR scoped to the macOS packaging fix. Coded on behalf of me — GPT-5.6 / Codex harness.

@extoci

Copy link
Copy Markdown
ContributorAuthor

Update: I verified the required Release Smoke failure was caused by the existing expo-sharing patch being version-specific while its dependency range allowed 57.0.17. The final PR now includes only a two-line specifier/lockfile alignment to keep the already-patched 57.0.16 behavior; the full smoke script passes locally. Coded on behalf of me — GPT-5.6 / Codex harness.

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:47

Dismissing prior approval to re-evaluate 817f596

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci
extociforce-pushed the t3code/investigate-intel-app-warning branch from 817f596 to 2d9596eCompareSeptember 2, 2026 19:55
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 19:55

Dismissing prior approval to re-evaluate 2d9596e

@extoci

extoci commented Sep 2, 2026

Copy link
Copy Markdown
ContributorAuthor

Correction after rebasing onto current main: the Expo Sharing patch/version fix is already present upstream and is no longer part of this PR. The rebased branch now contains only the macOS desktop packaging change (+19/-1); the earlier CI note referred to the pre-rebase state. Coded on behalf of me — GPT-5.6 / Codex harness.

@maria-rcks
maria-rcks merged commit 8d5b712 into pingdotgg:mainSep 2, 2026
26 checks passed
@mackinleysmith

Copy link
Copy Markdown
Contributor

hey @maria-rcks, do you think we could rebase or cherry pick this into the t3code/rebuild-mobile-app-swift branch so i can get the tests passing on #9071 please? thank you kindly!

github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 2, 2026
## What's Changed
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in pingdotgg/t3code#8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in pingdotgg/t3code#9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in pingdotgg/t3code#9240
* feat(web): add copy path button to diff headers by @ipanasenko in pingdotgg/t3code#2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in pingdotgg/t3code#9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in pingdotgg/t3code#9217
* fix(chat): show single tool calls without summaries by @maria-rcks in pingdotgg/t3code#9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in pingdotgg/t3code#9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in pingdotgg/t3code#9272
**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1260...v0.0.39-nightly.20260902.1261
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1261
buluma added a commit to buluma/helmcode that referenced this pull request Sep 2, 2026
… packages (#53)
node-pty ships prebuilt pty.node/spawn-helper binaries for both darwin-x64
and darwin-arm64 in the same package. A single-architecture mac build only
loads its own arch's prebuild, but electron-builder's static files list had
no way to know that, so the opposite-arch prebuild rode along and macOS
flagged the arm64 app as containing Intel-only nested binaries.
Add resolveMacFileExclusions(arch), thread arch into createBuildConfig, and
scope the exclusion to platform === "mac" so universal builds (and any
caller that omits arch) keep both prebuilds unchanged. Windows ships the
same opposite-arch bloat but is out of scope here.
Ported from pingdotgg/t3code#9240.
Co-authored-by: Michael Buluma <1452922+buluma@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@extoci@mackinleysmith@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(desktop): exclude opposite macOS pty prebuilds - #9240

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning
Sep 2, 2026
Merged

fix(desktop): exclude opposite macOS pty prebuilds#9240
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning

Conversation

@extoci

@extociextoci commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem:
The arm64 macOS artifact includes node-pty darwin-x64 pty.node and spawn-helper files, causing macOS to detect Intel-only nested components.

Fix:
Pass the target architecture into the desktop packaging config and exclude only the opposite Darwin node-pty prebuilds for single-architecture packages. Universal builds retain both architectures, and Intel macOS support remains unchanged.

Tests:

  • vp test run scripts/build-desktop-artifact.test.ts — 66 passed
  • Targeted formatting and type-aware lint passed
  • Exact GitHub arm64 release artifact was independently audited; filtered node-pty tree loaded and spawned /bin/sh successfully on Apple silicon

Bundle impact:
The audited arm64 app loses 101,072 uncompressed bytes (~98.7 KiB). The two entries occupied 31,045 compressed bytes (~30.3 KiB) in the ZIP, plus archive metadata.

Model/harness: GPT-5.6 / Codex harness.


Note

Low Risk
Packaging-only change scoped to macOS file exclusions in the desktop artifact script; runtime app logic is unchanged, though misconfigured callers that omit arch would still bundle both prebuilds.

Overview
Single-architecture macOS desktop packages were still shipping both Darwin node-pty prebuilds, which led macOS to treat Intel-only nested binaries as present in arm64 builds.

This PR adds resolveMacFileExclusions, which keeps the existing Windows-related exclusions and, for arm64 or x64 targets, adds an electron-builder exclusion for the non-targetdarwin-* prebuild tree. Universal builds (or callers that omit arch) keep both Darwin prebuilds, matching prior behavior.

The target arch is passed into createBuildConfig from buildDesktopArtifact so staged package.jsonbuild.files uses the resolved list instead of the static MAC_FILE_EXCLUSIONS alone.

Reviewed by Cursor Bugbot for commit 2d9596e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Exclude unused Darwin node-pty prebuilds from single-architecture macOS desktop builds

  • Adds resolveMacFileExclusions in build-desktop-artifact.ts which drops the opposite-architecture Darwin node-pty prebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified builds
  • Threads an architecture parameter through createBuildConfig and passes options.arch from buildDesktopArtifact so the exclusion resolver receives the requested target
  • Behavioral Change: single-architecture macOS artifacts now ship only the matching Darwin node-pty prebuild instead of both; universal and arch-unspecified builds are unchanged

Macroscope summarized 2d9596e.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 2, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@macroscopeapp

macroscopeappBot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2d9596e

Macroscope's review found this PR approvable — This is a focused macOS packaging fix that removes unused opposite-architecture node-pty binaries from single-architecture artifacts while preserving universal builds and application runtime logic. The change is small, localized, and has no product-default, security, schema, or infrastructure implications.

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

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:35

Dismissing prior approval to re-evaluate 1ccaa2e

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci

Copy link
Copy Markdown
ContributorAuthor

Release Smoke is the only failing required check. It fails before any desktop packaging step while regenerating the temporary lockfile in scripts/release-smoke.ts: ERR_PNPM_UNUSED_PATCH for expo-sharing@57.0.16. The same command reproduces locally from this clean branch, and the PR diff contains no mobile, patch, or lockfile changes; the current registry also resolves expo-sharing 57.0.17, which does not match the existing 57.0.16 patch. I left this PR scoped to the macOS packaging fix. Coded on behalf of me — GPT-5.6 / Codex harness.

@extoci

Copy link
Copy Markdown
ContributorAuthor

Update: I verified the required Release Smoke failure was caused by the existing expo-sharing patch being version-specific while its dependency range allowed 57.0.17. The final PR now includes only a two-line specifier/lockfile alignment to keep the already-patched 57.0.16 behavior; the full smoke script passes locally. Coded on behalf of me — GPT-5.6 / Codex harness.

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:47

Dismissing prior approval to re-evaluate 817f596

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci
extociforce-pushed the t3code/investigate-intel-app-warning branch from 817f596 to 2d9596eCompareSeptember 2, 2026 19:55
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 19:55

Dismissing prior approval to re-evaluate 2d9596e

@extoci

extoci commented Sep 2, 2026

Copy link
Copy Markdown
ContributorAuthor

Correction after rebasing onto current main: the Expo Sharing patch/version fix is already present upstream and is no longer part of this PR. The rebased branch now contains only the macOS desktop packaging change (+19/-1); the earlier CI note referred to the pre-rebase state. Coded on behalf of me — GPT-5.6 / Codex harness.

@maria-rcks
maria-rcks merged commit 8d5b712 into pingdotgg:mainSep 2, 2026
26 checks passed
@mackinleysmith

Copy link
Copy Markdown
Contributor

hey @maria-rcks, do you think we could rebase or cherry pick this into the t3code/rebuild-mobile-app-swift branch so i can get the tests passing on #9071 please? thank you kindly!

github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 2, 2026
## What's Changed
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in pingdotgg/t3code#8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in pingdotgg/t3code#9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in pingdotgg/t3code#9240
* feat(web): add copy path button to diff headers by @ipanasenko in pingdotgg/t3code#2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in pingdotgg/t3code#9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in pingdotgg/t3code#9217
* fix(chat): show single tool calls without summaries by @maria-rcks in pingdotgg/t3code#9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in pingdotgg/t3code#9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in pingdotgg/t3code#9272
**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1260...v0.0.39-nightly.20260902.1261
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1261
buluma added a commit to buluma/helmcode that referenced this pull request Sep 2, 2026
… packages (#53)
node-pty ships prebuilt pty.node/spawn-helper binaries for both darwin-x64
and darwin-arm64 in the same package. A single-architecture mac build only
loads its own arch's prebuild, but electron-builder's static files list had
no way to know that, so the opposite-arch prebuild rode along and macOS
flagged the arm64 app as containing Intel-only nested binaries.
Add resolveMacFileExclusions(arch), thread arch into createBuildConfig, and
scope the exclusion to platform === "mac" so universal builds (and any
caller that omits arch) keep both prebuilds unchanged. Windows ships the
same opposite-arch bloat but is out of scope here.
Ported from pingdotgg/t3code#9240.
Co-authored-by: Michael Buluma <1452922+buluma@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@extoci@mackinleysmith@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(desktop): exclude opposite macOS pty prebuilds - #9240

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning
Sep 2, 2026
Merged

fix(desktop): exclude opposite macOS pty prebuilds#9240
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning

Conversation

@extoci

@extociextoci commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem:
The arm64 macOS artifact includes node-pty darwin-x64 pty.node and spawn-helper files, causing macOS to detect Intel-only nested components.

Fix:
Pass the target architecture into the desktop packaging config and exclude only the opposite Darwin node-pty prebuilds for single-architecture packages. Universal builds retain both architectures, and Intel macOS support remains unchanged.

Tests:

  • vp test run scripts/build-desktop-artifact.test.ts — 66 passed
  • Targeted formatting and type-aware lint passed
  • Exact GitHub arm64 release artifact was independently audited; filtered node-pty tree loaded and spawned /bin/sh successfully on Apple silicon

Bundle impact:
The audited arm64 app loses 101,072 uncompressed bytes (~98.7 KiB). The two entries occupied 31,045 compressed bytes (~30.3 KiB) in the ZIP, plus archive metadata.

Model/harness: GPT-5.6 / Codex harness.


Note

Low Risk
Packaging-only change scoped to macOS file exclusions in the desktop artifact script; runtime app logic is unchanged, though misconfigured callers that omit arch would still bundle both prebuilds.

Overview
Single-architecture macOS desktop packages were still shipping both Darwin node-pty prebuilds, which led macOS to treat Intel-only nested binaries as present in arm64 builds.

This PR adds resolveMacFileExclusions, which keeps the existing Windows-related exclusions and, for arm64 or x64 targets, adds an electron-builder exclusion for the non-targetdarwin-* prebuild tree. Universal builds (or callers that omit arch) keep both Darwin prebuilds, matching prior behavior.

The target arch is passed into createBuildConfig from buildDesktopArtifact so staged package.jsonbuild.files uses the resolved list instead of the static MAC_FILE_EXCLUSIONS alone.

Reviewed by Cursor Bugbot for commit 2d9596e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Exclude unused Darwin node-pty prebuilds from single-architecture macOS desktop builds

  • Adds resolveMacFileExclusions in build-desktop-artifact.ts which drops the opposite-architecture Darwin node-pty prebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified builds
  • Threads an architecture parameter through createBuildConfig and passes options.arch from buildDesktopArtifact so the exclusion resolver receives the requested target
  • Behavioral Change: single-architecture macOS artifacts now ship only the matching Darwin node-pty prebuild instead of both; universal and arch-unspecified builds are unchanged

Macroscope summarized 2d9596e.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 2, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@macroscopeapp

macroscopeappBot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2d9596e

Macroscope's review found this PR approvable — This is a focused macOS packaging fix that removes unused opposite-architecture node-pty binaries from single-architecture artifacts while preserving universal builds and application runtime logic. The change is small, localized, and has no product-default, security, schema, or infrastructure implications.

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

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:35

Dismissing prior approval to re-evaluate 1ccaa2e

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci

Copy link
Copy Markdown
ContributorAuthor

Release Smoke is the only failing required check. It fails before any desktop packaging step while regenerating the temporary lockfile in scripts/release-smoke.ts: ERR_PNPM_UNUSED_PATCH for expo-sharing@57.0.16. The same command reproduces locally from this clean branch, and the PR diff contains no mobile, patch, or lockfile changes; the current registry also resolves expo-sharing 57.0.17, which does not match the existing 57.0.16 patch. I left this PR scoped to the macOS packaging fix. Coded on behalf of me — GPT-5.6 / Codex harness.

@extoci

Copy link
Copy Markdown
ContributorAuthor

Update: I verified the required Release Smoke failure was caused by the existing expo-sharing patch being version-specific while its dependency range allowed 57.0.17. The final PR now includes only a two-line specifier/lockfile alignment to keep the already-patched 57.0.16 behavior; the full smoke script passes locally. Coded on behalf of me — GPT-5.6 / Codex harness.

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:47

Dismissing prior approval to re-evaluate 817f596

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci
extociforce-pushed the t3code/investigate-intel-app-warning branch from 817f596 to 2d9596eCompareSeptember 2, 2026 19:55
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 19:55

Dismissing prior approval to re-evaluate 2d9596e

@extoci

extoci commented Sep 2, 2026

Copy link
Copy Markdown
ContributorAuthor

Correction after rebasing onto current main: the Expo Sharing patch/version fix is already present upstream and is no longer part of this PR. The rebased branch now contains only the macOS desktop packaging change (+19/-1); the earlier CI note referred to the pre-rebase state. Coded on behalf of me — GPT-5.6 / Codex harness.

@maria-rcks
maria-rcks merged commit 8d5b712 into pingdotgg:mainSep 2, 2026
26 checks passed
@mackinleysmith

Copy link
Copy Markdown
Contributor

hey @maria-rcks, do you think we could rebase or cherry pick this into the t3code/rebuild-mobile-app-swift branch so i can get the tests passing on #9071 please? thank you kindly!

github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 2, 2026
## What's Changed
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in pingdotgg/t3code#8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in pingdotgg/t3code#9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in pingdotgg/t3code#9240
* feat(web): add copy path button to diff headers by @ipanasenko in pingdotgg/t3code#2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in pingdotgg/t3code#9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in pingdotgg/t3code#9217
* fix(chat): show single tool calls without summaries by @maria-rcks in pingdotgg/t3code#9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in pingdotgg/t3code#9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in pingdotgg/t3code#9272
**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1260...v0.0.39-nightly.20260902.1261
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1261
buluma added a commit to buluma/helmcode that referenced this pull request Sep 2, 2026
… packages (#53)
node-pty ships prebuilt pty.node/spawn-helper binaries for both darwin-x64
and darwin-arm64 in the same package. A single-architecture mac build only
loads its own arch's prebuild, but electron-builder's static files list had
no way to know that, so the opposite-arch prebuild rode along and macOS
flagged the arm64 app as containing Intel-only nested binaries.
Add resolveMacFileExclusions(arch), thread arch into createBuildConfig, and
scope the exclusion to platform === "mac" so universal builds (and any
caller that omits arch) keep both prebuilds unchanged. Windows ships the
same opposite-arch bloat but is out of scope here.
Ported from pingdotgg/t3code#9240.
Co-authored-by: Michael Buluma <1452922+buluma@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@extoci@mackinleysmith@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(desktop): exclude opposite macOS pty prebuilds - #9240

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning
Sep 2, 2026
Merged

fix(desktop): exclude opposite macOS pty prebuilds#9240
maria-rcks merged 2 commits into
pingdotgg:mainfrom
extoci:t3code/investigate-intel-app-warning

Conversation

@extoci

@extociextoci commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem:
The arm64 macOS artifact includes node-pty darwin-x64 pty.node and spawn-helper files, causing macOS to detect Intel-only nested components.

Fix:
Pass the target architecture into the desktop packaging config and exclude only the opposite Darwin node-pty prebuilds for single-architecture packages. Universal builds retain both architectures, and Intel macOS support remains unchanged.

Tests:

  • vp test run scripts/build-desktop-artifact.test.ts — 66 passed
  • Targeted formatting and type-aware lint passed
  • Exact GitHub arm64 release artifact was independently audited; filtered node-pty tree loaded and spawned /bin/sh successfully on Apple silicon

Bundle impact:
The audited arm64 app loses 101,072 uncompressed bytes (~98.7 KiB). The two entries occupied 31,045 compressed bytes (~30.3 KiB) in the ZIP, plus archive metadata.

Model/harness: GPT-5.6 / Codex harness.


Note

Low Risk
Packaging-only change scoped to macOS file exclusions in the desktop artifact script; runtime app logic is unchanged, though misconfigured callers that omit arch would still bundle both prebuilds.

Overview
Single-architecture macOS desktop packages were still shipping both Darwin node-pty prebuilds, which led macOS to treat Intel-only nested binaries as present in arm64 builds.

This PR adds resolveMacFileExclusions, which keeps the existing Windows-related exclusions and, for arm64 or x64 targets, adds an electron-builder exclusion for the non-targetdarwin-* prebuild tree. Universal builds (or callers that omit arch) keep both Darwin prebuilds, matching prior behavior.

The target arch is passed into createBuildConfig from buildDesktopArtifact so staged package.jsonbuild.files uses the resolved list instead of the static MAC_FILE_EXCLUSIONS alone.

Reviewed by Cursor Bugbot for commit 2d9596e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Exclude unused Darwin node-pty prebuilds from single-architecture macOS desktop builds

  • Adds resolveMacFileExclusions in build-desktop-artifact.ts which drops the opposite-architecture Darwin node-pty prebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified builds
  • Threads an architecture parameter through createBuildConfig and passes options.arch from buildDesktopArtifact so the exclusion resolver receives the requested target
  • Behavioral Change: single-architecture macOS artifacts now ship only the matching Darwin node-pty prebuild instead of both; universal and arch-unspecified builds are unchanged

Macroscope summarized 2d9596e.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 2, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@macroscopeapp

macroscopeappBot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2d9596e

Macroscope's review found this PR approvable — This is a focused macOS packaging fix that removes unused opposite-architecture node-pty binaries from single-architecture artifacts while preserving universal builds and application runtime logic. The change is small, localized, and has no product-default, security, schema, or infrastructure implications.

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

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:35

Dismissing prior approval to re-evaluate 1ccaa2e

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci

Copy link
Copy Markdown
ContributorAuthor

Release Smoke is the only failing required check. It fails before any desktop packaging step while regenerating the temporary lockfile in scripts/release-smoke.ts: ERR_PNPM_UNUSED_PATCH for expo-sharing@57.0.16. The same command reproduces locally from this clean branch, and the PR diff contains no mobile, patch, or lockfile changes; the current registry also resolves expo-sharing 57.0.17, which does not match the existing 57.0.16 patch. I left this PR scoped to the macOS packaging fix. Coded on behalf of me — GPT-5.6 / Codex harness.

@extoci

Copy link
Copy Markdown
ContributorAuthor

Update: I verified the required Release Smoke failure was caused by the existing expo-sharing patch being version-specific while its dependency range allowed 57.0.17. The final PR now includes only a two-line specifier/lockfile alignment to keep the already-patched 57.0.16 behavior; the full smoke script passes locally. Coded on behalf of me — GPT-5.6 / Codex harness.

@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 16:47

Dismissing prior approval to re-evaluate 817f596

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@extoci
extociforce-pushed the t3code/investigate-intel-app-warning branch from 817f596 to 2d9596eCompareSeptember 2, 2026 19:55
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 19:55

Dismissing prior approval to re-evaluate 2d9596e

@extoci

extoci commented Sep 2, 2026

Copy link
Copy Markdown
ContributorAuthor

Correction after rebasing onto current main: the Expo Sharing patch/version fix is already present upstream and is no longer part of this PR. The rebased branch now contains only the macOS desktop packaging change (+19/-1); the earlier CI note referred to the pre-rebase state. Coded on behalf of me — GPT-5.6 / Codex harness.

@maria-rcks
maria-rcks merged commit 8d5b712 into pingdotgg:mainSep 2, 2026
26 checks passed
@mackinleysmith

Copy link
Copy Markdown
Contributor

hey @maria-rcks, do you think we could rebase or cherry pick this into the t3code/rebuild-mobile-app-swift branch so i can get the tests passing on #9071 please? thank you kindly!

github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 2, 2026
## What's Changed
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in pingdotgg/t3code#8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in pingdotgg/t3code#9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in pingdotgg/t3code#9240
* feat(web): add copy path button to diff headers by @ipanasenko in pingdotgg/t3code#2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in pingdotgg/t3code#9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in pingdotgg/t3code#9217
* fix(chat): show single tool calls without summaries by @maria-rcks in pingdotgg/t3code#9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in pingdotgg/t3code#9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in pingdotgg/t3code#9272
**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1260...v0.0.39-nightly.20260902.1261
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1261
buluma added a commit to buluma/helmcode that referenced this pull request Sep 2, 2026
… packages (#53)
node-pty ships prebuilt pty.node/spawn-helper binaries for both darwin-x64
and darwin-arm64 in the same package. A single-architecture mac build only
loads its own arch's prebuild, but electron-builder's static files list had
no way to know that, so the opposite-arch prebuild rode along and macOS
flagged the arm64 app as containing Intel-only nested binaries.
Add resolveMacFileExclusions(arch), thread arch into createBuildConfig, and
scope the exclusion to platform === "mac" so universal builds (and any
caller that omits arch) keep both prebuilds unchanged. Windows ships the
same opposite-arch bloat but is out of scope here.
Ported from pingdotgg/t3code#9240.
Co-authored-by: Michael Buluma <1452922+buluma@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@extoci@mackinleysmith@maria-rcks