fix(desktop): exclude opposite macOS pty prebuilds - #9240
Conversation
ApprovabilityVerdict: Approved at 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. |
Dismissing prior approval to re-evaluate 1ccaa2e
|
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. |
|
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. |
Dismissing prior approval to re-evaluate 817f596
817f596 to
2d9596e
Compare
Dismissing prior approval to re-evaluate 2d9596e
|
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. |
|
hey @maria-rcks, do you think we could rebase or cherry pick this into the |
## 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
… 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>
## What's Changed * fix(web): preserve theme when toggling advanced colors by @StiensWout in https://github.com/pingdotgg/t3code/pull/8500 * fix(chat): keep latest command live between messages by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9098 * fix(media): preview host files and stream videos across clients by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9023 * feat(cli): open projects in the running desktop app by @t3dotgg in https://github.com/pingdotgg/t3code/pull/8824 * chore: vouch six repeat contributors by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9131 * chore: delete dead code, unused deps, and duplicate helpers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9129 * fix(web): mute routine notices and update actions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9063 * perf(provider): bound persisted session lookups by @nateEc in https://github.com/pingdotgg/t3code/pull/8909 * fix(claude): skills picked from the composer now run by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9128 * fix(web): stop highlighter freezes and worker spin by using the Oniguruma WASM engine by @LetZico in https://github.com/pingdotgg/t3code/pull/8360 * perf: make streaming projection and activity appends incremental by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9152 * fix(server): bound orchestration replay payloads by @rcawston in https://github.com/pingdotgg/t3code/pull/8992 * perf(client-runtime): keep turn and checkpoint refs stable while streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9145 * perf(clients): lease sidebar status by visibility by @StiensWout in https://github.com/pingdotgg/t3code/pull/9052 * fix(desktop): show newest changes in nightly previews by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9138 * fix(settings): sync auto-settle and other shared preferences across environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9147 * fix(server): prevent accidental service downgrades by @t3dotgg in https://github.com/pingdotgg/t3code/pull/5302 * fix(server): keep attachments until the command commits by @t3dotgg in https://github.com/pingdotgg/t3code/pull/7941 * fix(claude): preview images read from the workspace by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9119 * fix(web): keep generated muted foreground dimmer than entered text by @flamboh in https://github.com/pingdotgg/t3code/pull/9113 * fix(clients): stop repeating expanded commands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9120 * fix(grok): health check, model selection, and stop all work against the real CLI by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9154 * perf(web): halve the cold-start bundle by splitting Clerk and cold routes by @StiensWout in https://github.com/pingdotgg/t3code/pull/9058 * feat(desktop): update the desktop app on remote Macs from the Update button by @t3dotgg in https://github.com/pingdotgg/t3code/pull/6554 * test(server): measure shell, second client, and reconnect transfer by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9157 * fix(web): project default model works on the hosted app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9142 * fix(web): darken neutral control surfaces by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9064 * fix(web): preserve panel state across workspace refreshes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8968 * feat(files): open markdown, HTML, and PDF files outside the workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9140 * feat(web): render HTML and PDF files in the file viewer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9143 * fix(web): compact project settings actions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9160 * fix(web): browse folders from file breadcrumbs by @404khai in https://github.com/pingdotgg/t3code/pull/8910 * feat(pull-requests): copy provider checkout commands by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9086 * fix(web): hide build pill in narrow sidebars by @flamboh in https://github.com/pingdotgg/t3code/pull/9159 * feat(web): cite assistant responses with inline citations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9146 * fix(provider): drop removed custom models from the model picker by @StiensWout in https://github.com/pingdotgg/t3code/pull/9075 * fix(web): align composer notices and stash by @Bil0000 in https://github.com/pingdotgg/t3code/pull/8890 * fix(web): label keybinding condition removal actions by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/8664 * fix(contracts): accept legacy pull request checkout results by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/8238 * fix(desktop): hold-to-quit no longer gets stuck by @saphid in https://github.com/pingdotgg/t3code/pull/9141 * chore: remove unused code and brittle tests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9150 * fix(chat): improve tool group summaries and scrolling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9106 * feat(web): copy the full error report from the error page by @StiensWout in https://github.com/pingdotgg/t3code/pull/9166 * fix(chat): replace failed tools with thinking by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9165 * fix(chat): align failed task progress test by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9172 * fix(web): open PR toast actions in app by @eimexdev in https://github.com/pingdotgg/t3code/pull/9006 * fix(desktop): check artifact build prerequisites by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/8975 * fix(server): discover project skills for Codex and OpenCode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/8778 * fix(pull-requests): expand code tab diffs by default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9174 * chore: bump vendored GhosttyKit and update terminal integration by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9155 * fix(web): copying a code block no longer copies triple backticks by @ipanasenko in https://github.com/pingdotgg/t3code/pull/8448 * fix(models): restore sticky new-thread selections by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9164 * fix(web): model info button opens its details on click by @StiensWout in https://github.com/pingdotgg/t3code/pull/9177 * fix(desktop): skip cached monitor compiler check by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9184 * fix(web): avoid stale file writes on close by @yashranaway in https://github.com/pingdotgg/t3code/pull/8630 * fix(server): bound OpenCode version probes by @yashranaway in https://github.com/pingdotgg/t3code/pull/8750 * fix(server): allow large Azure DevOps PR lists by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/8572 * fix(server): allow local-only worktree bases by @yashranaway in https://github.com/pingdotgg/t3code/pull/8751 * fix(web): remove projects with archived threads by @none23 in https://github.com/pingdotgg/t3code/pull/8798 * feat(web): make context window indicator opt-in by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9190 * fix(connect): refresh relay credentials before expiry by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9178 * fix(pull-requests): reuse github api reads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9176 * fix(server): stop titling linked PR threads from local git history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9191 * feat(updates): continue active threads across server restarts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9167 * fix(mobile): prevent message and composer overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9195 * fix(web): preserve composer draft during worktree setup by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9197 * fix(web): prevent two-digit list markers from being clipped by @G-R3 in https://github.com/pingdotgg/t3code/pull/9101 * fix(server): discover project skills for Claude by @anirudhsama in https://github.com/pingdotgg/t3code/pull/9210 * feat(web): redesign provider editor and models list by @StiensWout in https://github.com/pingdotgg/t3code/pull/8508 * fix(web): prevent connection rows from wrapping during removal by @MatthewFeroz in https://github.com/pingdotgg/t3code/pull/8706 * fix(pull-requests): align checkout control with author by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9196 * fix(release): pin patched expo-sharing version by @willsheldon in https://github.com/pingdotgg/t3code/pull/9250 * chore(mobile): update Expo Sharing to 57.0.17 by @StiensWout in https://github.com/pingdotgg/t3code/pull/9248 * fix(web): hide deleted providers with prototype keys by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/8337 * feat(mobile): long-press file references for path and open actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9258 * fix(desktop): exclude opposite macOS pty prebuilds by @extoci in https://github.com/pingdotgg/t3code/pull/9240 * feat(web): add copy path button to diff headers by @ipanasenko in https://github.com/pingdotgg/t3code/pull/2403 * fix(server): subscribe before provider settings watcher by @t3-code[bot] in https://github.com/pingdotgg/t3code/pull/9271 * fix(mobile): show filled filter icon on Android when filters are active by @none23 in https://github.com/pingdotgg/t3code/pull/9217 * fix(chat): show single tool calls without summaries by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9267 * fix(web): warn when shared settings have no target environment by @imabdulazeez in https://github.com/pingdotgg/t3code/pull/9207 * fix(web): confirm closing agent-controlled browsers by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9272 * feat(desktop): browser profiles for the preview browser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7254 * refactor(shared): move the node:sqlite Effect SQL client into shared by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7272 * feat(web): add opt-in panel animations by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8830 * feat(projects): automatically pull clean default branches by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9277 * fix(web): show pull request state icons in tabs by @flamboh in https://github.com/pingdotgg/t3code/pull/9112 * feat(providers): add context compaction across harnesses by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8808 * feat(web): add proactive panels by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9276 * fix(web): unify control sizing across settings pages by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9281 * fix(web): offer browser profiles from the empty-panel launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9279 * Revert "feat(providers): add context compaction across harnesses" by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9284 * fix(web): show scroll-to-end as soon as the last message slips under the composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9280 * fix(cursor): honor auto and full access modes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9283 * fix(desktop): detect installed Spectre libs for Windows builds by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9285 * fix(pull-requests): missing features & better behaviour by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9188 * fix(providers): discover workspace skills everywhere by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9180 * fix(server): preserve automatic settlement timestamps by @eimexdev in https://github.com/pingdotgg/t3code/pull/9254 * fix(opencode): show Reasoning selector for OpenCode models by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9287 * feat(web): preview document attachments in the file viewer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9292 * chore(ci): narrow the UI consistency check-run agent by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9297 * chore(ci): only run check-run agents on vouched contributors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9298 * fix(web): stop remounting markdown on every activity delta by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9306 * fix(pull-requests): keep cached PR chrome on reopen by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9294 * feat(environments): draw each environment as the machine it runs on by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9299 * feat(web): apply and remove labels from the pull request tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9313 * fix(sidebar): collapse settled and snoozed shelves by default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9314 * refactor(media): unify file and media previews across clients by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9253 * fix(chat): keep live tool labels in present tense by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9316 * chore: audit lint directives and move plugin allowlists into config by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9300 * chore(ci): narrow the Effect conventions check-run agent by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9321 * refactor(mobile): style plain views with Uniwind classes instead of the theme bridge by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9322 * fix(dev): share dev servers on the loopback Vite actually binds by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9324 * fix(web): line up the titlebar wordmark label and version pill by @tristanmanchester in https://github.com/pingdotgg/t3code/pull/9255 * fix(web): make the diff layout toggle a persisted setting by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9326 * chore: dedupe lightningcss and tailwind node bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9331 * chore: upgrade vite-plus to 0.3.0 by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9327 * feat(web): add a file tree to the diff panel and pull request code tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9330 * feat(web): add PageUp/PageDown chat navigation by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9315 * fix(web): collapse PR header actions to icons when narrow by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9334 * fix(web): resolve Vite sourcemap and supports warnings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9343 * feat(web): choose whether links open in the default browser or in T3 Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9339 * fix(web): add press feedback to buttons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9349 * feat(web): add customizable project icons by @saphid in https://github.com/pingdotgg/t3code/pull/9137 * fix(mobile): stop indented code overflowing Android chat bubbles by @Adamulek123 in https://github.com/pingdotgg/t3code/pull/9347 * fix(web): let the pull request list use wide screens by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9351 * feat: display native app and browser icons in work logs by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9093 * fix(web): collapse oldest pull request comments by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9323 * fix(pull-requests): shared state + not settling? by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9332 * fix(web): stop usage summary requests reporting slow RPCs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9358 * feat(web): suggest ssh hosts in a dropdown under the host field by @flamboh in https://github.com/pingdotgg/t3code/pull/9171 * feat(web): mod+w closes the active right panel tab before the window by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9363 * test(web): remove static markup-only component tests by @t3-code[bot] in https://github.com/pingdotgg/t3code/pull/9364 * fix(environments): draw the machine icon everywhere an environment is named by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9365 * fix(web): settled sidebar rows use the project fallback icon by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9366 * fix(web): match project icon chooser button sizes by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9368 * fix(mobile): pressed and disabled styles no longer apply unconditionally by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9355 * fix(mobile): size expanded tool groups correctly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9359 * fix(web): collapse the resting composer by @chrisdeeming in https://github.com/pingdotgg/t3code/pull/7855 * fix(web): keep trailing tool groups out of "Worked for" accordion by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9384 * feat(marketing): put named-developer quotes on the landing page by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9385 * fix(claude): expand slash commands when a message has attachments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9122 * fix(web): stop the resting composer layout loop by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9393 * fix(web): render assistant images inline in chat by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9126 * feat(providers): add Google Antigravity via the official ACP agent by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9348 * fix(mobile): show an error instead of an endless preview spinner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9123 * fix(usage): price new models without waiting a day for the rate table by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9202 * fix(web): unlock the composer when preview capture fails by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9127 * fix(antigravity): refresh the model manifest so older Gemini models fold as legacy by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9397 * perf(ci): reuse dependency checks in release builds by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9399 * fix(web): send cited messages with Cmd+Enter by @extoci in https://github.com/pingdotgg/t3code/pull/9307 * fix(web): preserve explicit preview navigation URLs by @nateEc in https://github.com/pingdotgg/t3code/pull/8902 * fix(web): prevent loading ssh environments from overriding navigation by @flamboh in https://github.com/pingdotgg/t3code/pull/9168 * fix(mobile): skip unsupported shared settings targets by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9381 * fix(web): avoid duplicate Antigravity install status by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/9419 * fix(composer): mute fast icon when collapsed by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9451 * fix(web): unify skeleton loading animations on one pulse by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9448 * fix(web): prioritize authored pull requests by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9453 * fix(web): make project icons the default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9457 * fix(server): reuse pr state when settling threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9459 * fix(web): keep agent images collapsed by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9460 * fix(web): banner buttons no longer expand the resting composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9452 * fix(web): stop clipping the traits chevron on long Codex effort labels by @zortos293 in https://github.com/pingdotgg/t3code/pull/9433 * fix(web): make right panel tabs easier to scroll by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9461 * fix(web): render transparent previews on white by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/9463 * fix(mobile): show loading and syncing in the working pill by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9466 * fix(server): keep a/ and b/ prefixes in rendered git patches by @Mnigos in https://github.com/pingdotgg/t3code/pull/9438 * fix(server): full-access OpenCode threads no longer ask for approvals by @shivamhwp in https://github.com/pingdotgg/t3code/pull/9282 * fix(web): reuse pull request list data while loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9467 * feat(web): let users turn off composer collapse on blur and scroll by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9469 * fix(web): move workflow approval beside checks by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9465 * fix(desktop): refresh generated annotation styles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9488 * fix(web): let the PR reviewer and label search boxes take keystrokes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9479 * fix(web): dont collapse composer when interacting with bottom row by @extoci in https://github.com/pingdotgg/t3code/pull/9490 * fix(desktop): restore second-press quit fallback by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9485 * fix(web): keep opencode icon hollow in collapsed composer by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9492 * fix(web): keep agent browser preview visible by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9484 * fix(mobile): keep the machine glyph next to the environment label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9486 * fix(mobile): let back swipe pop from horizontal scroll edges by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9493 * fix(antigravity): discover legacy workspace skills by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9410 * fix(mobile): resolve Antigravity provider icon and normalize driver matching by @Invictine in https://github.com/pingdotgg/t3code/pull/9495 * fix(antigravity): forward Google sign-in URLs from browser helper by @WellyngtonF in https://github.com/pingdotgg/t3code/pull/9425 * feat(desktop): import browser cookies into a profile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7255 * feat(desktop): import from Chrome, Edge, Brave, Vivaldi, Opera, Arc and Firefox by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7260 * feat(desktop): resolve Chromium cookie keys on Linux by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7261 * fix(antigravity): allow slow runtime startup during setup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9510 * fix(antigravity): keep model choices up to date by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9511 * fix(antigravity): handle native sign-in URLs on stderr by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9514 * fix(antigravity): update managed runtime to 1.1.1 by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9509 * fix(desktop): address the browser import review left over from the stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9516 * feat(antigravity): show subagent calls and results by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9515 * fix(web): let paste expand a resting composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9498 * fix(web): keep the composer open while selecting timeline text by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9499 * fix(web): return focus to the composer after closing a media preview by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9513 * fix(server): keep events during thread subscription startup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9521 * chore: forward issue/PR/discussion events to Cursor hygiene by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9518 * fix(auth): keep pairing credentials out of access read models by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9523 * chore: drop comment events from Cursor hygiene forwarder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9527 * feat(codex): support async questions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9512 * fix(web): keep right panel controls clickable by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9517 * feat(usage): show Codex and Claude subscription limits on a Limits tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9507 * feat(web): reorganize settings pages by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9354 * fix(server): settle branch threads immediately on pull request merge by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9528 * fix(server): back off relay client restarts after rapid exits by @derektrimm in https://github.com/pingdotgg/t3code/pull/8788 * fix(codex): accept rate limit errors on thread resume by @nateEc in https://github.com/pingdotgg/t3code/pull/8897 * fix(desktop): preview CDP sessions no longer hard-crash the app by @sethwebster in https://github.com/pingdotgg/t3code/pull/9068 * Fix worktree removal timing out on large install trees by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3902 * fix(web): settle the resting composer layout with a pixel of slack by @matheustimbo in https://github.com/pingdotgg/t3code/pull/9482 * fix(web): keep automatic project icons consistent by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9535 * fix(server): include SQLite conditions in persistence errors by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9536 * fix(dev): keep shared dev reloads and hot updates working by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9543 * feat(providers): add context compaction command by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9293 * fix(mobile): keep store screenshots free of system banners and show dictation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9548 * fix(web): restore composer controls as space becomes available by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9539 * fix(web): measure collapsed model labels at their visible width by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9540 * fix(web): close composer menus when their controls hide by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9541 * fix(web): thread error banner no longer shifts the chat by @flamboh in https://github.com/pingdotgg/t3code/pull/9473 * fix(server): reveal normalized paths in File Explorer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9551 * feat(marketing): fresh screenshot and floating marks on the homepage by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9547 * feat(usage): redeem Codex reset credits from the Limits tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9534 * fix(server): find newly opened pull requests after agent turns by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9125 * ci: add on-demand Windows test workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9538 * fix(web): simplify expanded tool details by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9549 * fix(web): keep the last message visible when the resting composer expands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9553 * test(web): fix flaky startup and Tailwind tests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9558 * fix(web): keep codex restart responses continuous by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9560 * fix(web): make settings sidebar sub-section buttons full width by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9562 * fix(web): render settings sidebar immediately by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9563 * chore: vouch august contributors by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9557 * fix(web): stabilize right panel transitions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9554 * fix: better shell syntax handling for labels by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9371 * fix(web): align the sidebar wordmark by baseline by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9578 * fix(antigravity): keep subagent batches active after launch by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9579 * fix(mobile): render workspace images in markdown file previews by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/8769 * fix(usage): deduplicate CLI proxy subscription accounts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9584 * fix(web): bound disconnected send toasts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9592 * fix(desktop): restore panel titlebar interactions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9591 * fix(connect): refresh authorization without disconnecting by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9582 * fix(web): show context meter in compact composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/9430 * fix(pull-requests): refresh data after thread turns by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9496 * fix(web): render draft PRs in gray by @extoci in https://github.com/pingdotgg/t3code/pull/9537 * refactor(web): move usage provider controls to settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9599 * fix: show idle subagent batches without completion marks by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9616 * fix(web): group image views like other tool calls by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9597 * fix: preserve tool icons on failed calls by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9606 * fix(connect): diagnose incomplete headless server setup by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9602 * fix(web): keep command palette above composer menus by @Gigioxx in https://github.com/pingdotgg/t3code/pull/9613 * fix(web): snooze menu no longer overlaps thread details by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/9601 * fix(web): match composer pull request state icons by @flamboh in https://github.com/pingdotgg/t3code/pull/9375 * fix(server): load OpenCode workspace skills via SDK to avoid 64KB CLI pipe truncation by @BarryHenryJr in https://github.com/pingdotgg/t3code/pull/9585 * fix(web): mute sidebar branch name to match worktree icon by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9622 * fix(web,mobile): fold context compaction under settled turn folds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9623 * feat(mobile): make chat text selectable on Android by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/8779 * fix(web): toggle a single stashed prompt with Cmd+S by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9644 * fix(server): prevent duplicate desktop clients after restart by @seeb1337 in https://github.com/pingdotgg/t3code/pull/6305 * fix(web): resume Antigravity threads without repeated sign-in by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9647 * feat(mobile): paste the phone clipboard into the terminal by @lnieuwenhuis in https://github.com/pingdotgg/t3code/pull/9199 * feat(web): show which sidebar threads hold an unsent draft by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9658 * fix(server): unblock OpenCode approvals and stop by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9653 * fix(desktop): quit immediately on a second shortcut press by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9657 * fix(server): update Claude Agent SDK to 0.3.260 by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9135 * perf(server): stop loading message bodies for thread summaries by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9662 * perf(web): speed up terminal snapshots by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9663 * fix(web): show machine icons in the environment picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9668 * perf(mobile): bound diff syntax highlighting work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9673 * perf(web): keep Markdown mounted during streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9677 * perf(mobile): skip unused legacy list work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9679 * perf(marketing): serve images at their display size by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9682 * perf(server): cache and stream static web assets by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9669 * perf(server): batch projector cursor writes by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9671 * perf(server): stop retaining unused OpenCode tool history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9684 * perf(mobile): reuse chat feed rows during streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9688 * perf(server): omit repeated OpenCode progress logs by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9689 * perf(clients): avoid waiting to read cached relay tokens by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9691 * perf(mobile): reuse diff rows during comment edits by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9693 * perf(web): defer composer draft serialization by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9695 * feat(server): measure provider turn token usage by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9132 * perf(marketing): stop continuous homepage motion by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9697 * perf(server): avoid full patches for checkpoint summaries by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9694 * perf(web): defer diff workers until a code view opens by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9692 * perf(marketing): serve website fonts locally by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9701 * perf(server): stop rebuilding terminal history per chunk by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9703 * perf(server): use one query for buffered provider events by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9706 * perf(relay): avoid repeated activity decoding by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9708 * perf(web): stop continuous chat status animations by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9709 * fix(mobile): preserve saved work after storage read failures by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9710 * perf(web): stop replaying terminal buffers on rollover by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9707 * feat(web): preview pull request links by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9631 * perf(client): reduce thread-list update work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9716 * fix(server): settle inactive threads with open PRs by @Gigioxx in https://github.com/pingdotgg/t3code/pull/9610 * fix(server): bound slow-client event buffers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9715 * test(server): allow either valid file-search match by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9720 * fix(web): match provider settings layout for disconnected devices by @flamboh in https://github.com/pingdotgg/t3code/pull/9619 * fix(web): keep the slash menu above the composer when vertical space is short by @Mnigos in https://github.com/pingdotgg/t3code/pull/9625 * fix(mobile): remove provider setup by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9721 * perf(web): stop rendering hidden terminals by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9718 * fix(mobile): read file-backed image drafts before enabling them by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9713 * perf(server): replay only the selected thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9726 * fix(web): mute composer helper text by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/9654 * feat(web): unpin threads from the sidebar multi-select menu by @gsimone in https://github.com/pingdotgg/t3code/pull/9651 * perf(web): reuse timeline rows while text streams by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9725 * fix(relay): bound stalled push requests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9734 * perf(server): stop caching unused OpenCode tool parts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9738 * fix(web): fold single trailing activity by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9739 * fix(web): show project settings for new threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9743 * perf(mobile): bound the parsed review cache by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9749 * perf(web): avoid repeated terminal metadata scans by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9747 * perf(server): bound terminal history by bytes by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9748 * feat(web): link pull request authors to profiles by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9627 * fix(web): refine server update notice by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9744 * perf(client): stop thread streams when unused by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9740 * perf(mobile): defer file preview highlighter startup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9752 * perf(server): skip history reads for metadata commands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9758 * perf(web): defer image URL requests for thread history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9760 * fix(models): make GPT-6-Astra current by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9762 * fix(web): stop empty diffs replacing pull requests by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9753 * fix(sidebar): mute background working threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9759 * fix(web): reset automatic pull to default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9763 * fix(web): restore file comment focus in editable preview by @ShpetimA in https://github.com/pingdotgg/t3code/pull/9061 * docs: keep internal guides focused on architecture by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9755 * docs: focus user guides on features and workflows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9756 * fix(web): stop panel motion during navigation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9766 * fix(web): open composer selectors below controls by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9767 * perf(server): skip unused Linux process detail reads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9768 * fix(server): remove retired Codex models after refresh by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9773 * test: stop path and platform tests depending on the host OS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9564 * test(server): skip posix executable fixtures on a Windows host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9565 * test: skip symlink fixtures where the host cannot create symlinks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9566 * test(server): run fake provider CLIs through a Node stub on every host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9567 * test(desktop): make path fixtures and timeouts host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9568 * fix(server): tolerate the missing directory fsync on Windows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9569 * test(server): pin git config for fixtures and compare native realpaths by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9570 * test: skip POSIX mode-bit assertions on a Windows host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9571 * test(server): keep provider fixture directories host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9572 * test: resolve the Windows temp directory to its long name by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9573 * test(server): run the Antigravity install harness for the host platform by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9574 * fix(server): canonicalise media paths the same way their callers do by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9575 * test(server): make Windows path and async fixtures deterministic by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9576 * fix(server): refuse symlinked theme files on Windows too by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9580 * test(scripts): keep Windows packaging checks host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9589 * fix(contracts): include tool.denied in runtime event types by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9770 * feat(mobile): split the usage page into Usage and Limits tabs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9775 * fix(web): restore the running tool label shine by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9777 * fix(web): align provider controls with machine tabs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9769 * docs(web): document panel motion during navigation by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9778 * feat(usage): support custom model prices by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9774 * fix(web): center pull request link previews by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9794 * fix: address usage limits and merge settlement regressions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9784 * fix(web): give toggle thumbs consistent inset spacing by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9805 * fix(web): use segmented controls for mode switches by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9781 * fix(server): recover opted-in threads after machine restarts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9803 * fix(web): simplify changed files into a persistent folder tree by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9821 * feat: add custom model names and option descriptors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9807 * fix(cursor): discover symlinked skills as package boundaries by @EzraBuild in https://github.com/pingdotgg/t3code/pull/9420 * fix(ssh): exec managed servers without npm wrappers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9843 * fix(server): detect nested Git workspaces for checkpoints by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9842 * fix(web): keep worktree origin preference visible by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9846 * fix(web): smooth settings sidebar transitions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9811 * feat(web): highlight visible settings sections by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9812 * fix(web): keep the sidebar project filter across navigation by @Mnigos in https://github.com/pingdotgg/t3code/pull/9416 * fix(server): surface Claude safety model fallback notices instead of dropping them by @darahaas15 in https://github.com/pingdotgg/t3code/pull/8853 * fix(web): reload saved colors when reopening the theme editor by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9847 * feat(desktop): import cookies from Safari by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7262 * fix(web): respect case in POSIX file links by @Michel-Liao in https://github.com/pingdotgg/t3code/pull/9309 * fix(server): surface a missing workspace folder instead of a spawn error by @kakismash in https://github.com/pingdotgg/t3code/pull/5040 * fix: stop favicon requests for private link hosts on web and mobile by @fe-franco in https://github.com/pingdotgg/t3code/pull/5838 * fix(server): preserve native provider executable paths during updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9850 * fix(web): restore composer expansion after tool calls by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9782 * fix(client): explain possible network blocking for T3 Connect by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9783 * fix(desktop): isolate preview keyboard shortcuts from the host by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9840 * fix(prs): reuse GitHub data and defer optional reads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9835 * perf(shared): skip duplicate PATH entries and per-probe tracing by @jadeva in https://github.com/pingdotgg/t3code/pull/9618 * fix(web): preserve focus and prioritize picker shortcuts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9795 * fix(skills): support names beginning with digits by @amiralibg in https://github.com/pingdotgg/t3code/pull/9244 * fix(server): advertise truecolor in the integrated terminal by @shubhxho in https://github.com/pingdotgg/t3code/pull/7680 * fix(claude): surface usage-limit pauses in the thread by @vitalyiegorov in https://github.com/pingdotgg/t3code/pull/7165 * fix: restore UX after performance improvements by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9799 * fix(codex): show what a file-change approval will change by @walid-baharwal in https://github.com/pingdotgg/t3code/pull/8669 * fix(ci): add fallback Ubuntu package mirrors by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9864 * fix(web): copy text over plain HTTP by @Michel-Liao in https://github.com/pingdotgg/t3code/pull/8023 * fix(server): dismiss native questions when their turn ends by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9851 * fix(server): quote copied native provider update commands by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9856 * fix(release): install the correct Windows Spectre component by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9859 * fix(web): show retained runtime diagnostics in the work log by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9870 * fix(web): make sidebar project actions reachable by keyboard and screen reader by @akj in https://github.com/pingdotgg/t3code/pull/5521 * fix(preview): bound automation waits and screenshot captures by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4685 * fix(web): render and filter usage as environments respond by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9860 * feat(web): edit usage prices across selected environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9861 * fix(mobile): keep usage tabs below the header when switching by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9876 * fix(connect): refresh HTTP credentials without reconnecting by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9594 * fix(web): keep file autosaves active after effect replay by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9878 * fix(web): prioritize open panel pull request when copying by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9877 * fix(cli): resolve projects with missing workspace directories by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9885 * fix(web): sort equally merge-ready pull requests by diff size by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9887 * fix(chat): show hours for long runs by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9894 * fix(server): only run provider updates through the installer that owns the binary by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9325 * fix(web): discard stale highlights after file edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9902 * feat(web): recall sent prompts with the up arrow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9173 * fix(server): keep mise-owned npm packages manual-only by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9927 * fix(settings): share restart continuation across environments by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9933 * fix(server): capture turn checkpoints after all edits finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9841 * fix(web): load file grammar before enabling edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9947 * fix(web): deduplicate PR project filter choices by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9948 * test(web): keep provider field readers private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9952 * test(mobile): keep composer selection helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9953 * test(client-runtime): keep scoped key implementation private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9955 * fix(web): reveal reselected diff files by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9951 * refactor(web): remove obsolete changed-files preview helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9956 * fix(web): give the browser keybinding notice breathing room by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9964 * chore: configure Knip workspace audits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9958 * refactor(web): prune unused UI and provider code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9959 * chore(mobile): remove obsolete widget wiring script by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9960 * chore: remove redundant root tooling dependencies by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9961 * ci: reject unused files and dependencies with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9962 * test(contracts): keep driver default lookup private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9968 * test(server): remove Azure permissions constant snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9973 * refactor(shared): remove unused viewport formatters by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9970 * refactor(mobile): remove unused provider option summary by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9971 * refactor(client-runtime): remove unused connection phase message by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9972 * refactor(mobile): remove unused layout calculations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9974 * refactor(client-runtime): remove unused file position predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9976 * refactor(mobile): remove unused font size steppers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9975 * test(server): cover thread lookup through command invariants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9978 * test(server): remove provider equality wrapper fixture by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9979 * test(server): assert the dispatched welcome thread model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9980 * refactor(desktop): remove unused keyring remediation text by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9981 * refactor(desktop): remove test-only Electron error predicates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9982 * refactor(web): remove unused pull request state label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9984 * perf(web): keep timeline row reuse engaged while text streams by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9909 * fix(web): reset markdown widgets when the previewed file changes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9910 * fix(mobile): keep highlighting review diffs after a long line by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9911 * fix(marketing): align the endorsement carousel with its heading by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9912 * fix(client): keep warm thread resumes live instead of flashing sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9913 * test(server): remove authorization prompt snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9985 * test(server): remove static OAuth page snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9986 * test(server): remove provider label identity assertion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9987 * test(server): consolidate agent activity opt-in coverage by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9988 * refactor(shared): remove unused preview URL predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9989 * refactor(shared): remove unused mention path serializer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9990 * refactor(shared): remove retired PATH capture parser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9991 * refactor(client-runtime): remove unused subagent selectors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9992 * refactor(web): test the live usage column builder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9993 * refactor(web): remove unused aspect ratio reconciler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9994 * refactor(web): remove obsolete cloud listing helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9995 * test(web): remove composer control style snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9996 * test(web): keep the preview profile label helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9997 * test(server): cover raw OpenCode deltas through the adapter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9977 * refactor(web): remove obsolete pull request link opener by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9983 * test(relay): keep the stage slug helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9998 * refactor(mobile): keep project selection helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9999 * refactor(mobile): keep review default ID helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10000 * refactor(mobile): remove unused native style constants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10001 * refactor(mobile): test terminal palettes through public theme API by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10002 * refactor(mobile): remove unused file tree walkers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10003 * refactor(shared): keep persisted settings helpers private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10004 * test(mobile): remove mocked UUID shape assertions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10006 * refactor(mobile): test final connection status presentation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10007 * test(web): keep pull request menu items private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10016 * refactor(shared): test favicon selection through public API by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10005 * refactor(server): remove test-only pricing normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10017 * refactor(web): remove unused desktop update visibility helper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10014 * refactor(web): remove obsolete provider update helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10015 * refactor(web): remove unused terminal context preview formatter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10009 * refactor(web): test environment-scoped draft promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10010 * fix(web): retain wrapped row heights during edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10018 * refactor(shared): remove unused Clerk hostname predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10008 * refactor(tailscale): keep package internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10011 * ci: reject unused tailscale exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10012 * fix(web): keep chat media at a stable size while it loads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9938 * refactor(server): keep manifest age parsing private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10028 * refactor(mobile): remove unused awareness relay URL normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10029 * refactor(server): remove unused startup heartbeat launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10030 * refactor(shared): keep search ranking comparator private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10031 * refactor(server): keep telemetry identity errors private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10032 * refactor(mobile): test composer persistence through the live decoder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10033 * refactor(web): remove unused sidebar selectors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10034 * refactor(server): keep Cursor fallback models private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10038 * refactor(web): remove unused xterm link range helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10040 * refactor(mobile): remove obsolete review list builder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10039 * test(server): remove duplicate VCS error constructor checks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10042 * refactor(mobile): keep appearance calculations private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10043 * refactor(web): remove unused sidebar menu action by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10044 * refactor(web): test live Ghostty link resolution directly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10041 * test(server): exercise Codex prompts through public assembly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10045 * refactor(shared): remove unused elapsed-time adapter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10046 * refactor(web): remove unused preview thread reset helper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10049 * refactor(desktop): remove test-only error predicates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10047 * refactor(mobile): keep review reset hashing private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10048 * test(web): remove AppRoot element order snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10052 * refactor(codex): keep app-server client internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10035 * ci: reject unused Codex client exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10036 * refactor(server): simplify native telemetry error internals by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10057 * refactor(mobile): remove write-only terminal font cache by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10058 * refactor(web): remove obsolete HSL theme generator by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10061 * refactor(mobile): remove obsolete native diff token stream by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10062 * test(server): remove title prompt editorial snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10063 * test(server): remove repeated runtime prompt interpolation cases by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10059 * refactor(web): observe preview tests through the live registry by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10064 * test(server): remove keybinding default assignment snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10065 * refactor(mobile): remove obsolete whole-file review highlighters by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10067 * test(server): cover CLI runner detection through command suggestions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10066 * refactor(mobile): remove unused cloud relay URL normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10068 * refactor(web): test live keybinding resolvers directly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10069 * test(server): cover Grok skill parsing through discovery by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10070 * test(web): remove mocked diff view prop snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10073 * test(web): remove mocked annotation options snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10074 * refactor(web): keep pending action labels private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10075 * refactor(mobile): remove unused cloud pending-status mapper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10071 * refactor(web): remove unused model picker hint helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10072 * fix(server): resume checkpointing after git init by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/10078 * feat(web): first-run welcome wizard with agent setup and project import by @t3dotgg in https://github.com/pingdotgg/t3code/pull/5362 * fix(server): keep Homebrew mise shims manual-only by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10085 * fix(ssh): report remote package installation failures accurately by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10088 * fix(web): keep bulk thread deletion going after failures by @m-de-graaff in https://github.com/pingdotgg/t3code/pull/4615 * fix(web): scale agent spawn rows with interface font by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10092 * fix(web): prevent sidebar tooltip title clipping by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/10086 * fix(web): keep the composer expanded until the thread can scroll by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9965 * fix(web): preserve original mention text in the composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10100 * refactor(mobile): remove unused pairing redaction wrapper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10147 * test(web): drop provider banner styling assertions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10148 * refactor(client-runtime): remove unused relay token waiter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10151 * test(web): drop sidebar artwork styling snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10152 * refactor(ssh): keep package internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10144 * ci: reject unused SSH exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10145 * refactor(acp): keep protocol implementation exports private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10165 * fix(shared): validate cloudflared with the version subcommand by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9880 * fix(desktop): separate LAN and Tailscale pairing endpoints by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9882 * fix(server): install pinned runtime when pnpm node lacks npm by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9923 * fix(web): hide sidebar search shortcut on mobile by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9932 * fix(web): align tool disclosure chevrons with expanded state by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9935 * fix(antigravity): distinguish session initialization auth failures by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9919 * fix(cursor): cache successful model discovery between refreshes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9918 * fix(opencode): revert from the first removed assistant message by @maria-rcks in https://github.com/pingdotgg/t3code/pull/…
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:
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
createBuildConfigfrombuildDesktopArtifactso stagedpackage.jsonbuild.filesuses the resolved list instead of the staticMAC_FILE_EXCLUSIONSalone.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-ptyprebuilds from single-architecture macOS desktop buildsresolveMacFileExclusionsin build-desktop-artifact.ts which drops the opposite-architecture Darwinnode-ptyprebuild for single-arch macOS packages and keeps both prebuilds for universal or unspecified buildsarchitectureparameter throughcreateBuildConfigand passesoptions.archfrombuildDesktopArtifactso the exclusion resolver receives the requested targetnode-ptyprebuild instead of both; universal and arch-unspecified builds are unchangedMacroscope summarized 2d9596e.