Repository navigation
Conversation
Apply ci.yml's sparse exclusion of the vendored libghostty .a files to the release, desktop build, Windows test, relay and web preview checkouts, which never build the iOS app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Release, deploy and test workflows skip vendored iOS terminal archives they do not use. Mobile build checkouts, deployment behavior and analysis commands remain unchanged, keeping the operational impact limited to runner workspace contents. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Exclude vendored archives .github/workflows/* |
Deployment, preview, release, cleanup, and test workflow checkouts exclude .a files under the terminal module’s Vendor directory. |
Estimated code review effort: 1 (Trivial) | ~5 minutes
Change: Other
Suggested reviewers: t3dotgg, juliusmarminge
Merge Risk: 
Minimal · up to 960b2
-
The exclusions reduce checkout size without removing files required by these workflows.
Pre-merge checks: 
4
-
Full details: Description check
-
Explanation
The description includes complete Problem, Change, Scope and approval, and Verification sections. It explains the affected workflows, rationale, scope, validation results, limitations, and prior implementation.
-
Finishing Touches
-
Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Problem
The repo vendors two iOS-only
libghostty-fat.aarchives underapps/mobile/modules/t3-terminal/Vendor/, 49.5 MB on disk together. #20044 stopped the CI jobs from checking them out. The release workflow's jobs, the desktop builds it calls, and the Windows test, relay preview and web preview workflows still fetch and write both archives on every run, though none of them builds the iOS app.Change
The exclusion line
ci.ymlalready uses,!/apps/mobile/modules/t3-terminal/Vendor/**/*.a, is added right after!/.repos/in every remaining whole-repo sparse checkout outside the mobile workflows:release.yml(preflight through announce)windows-tests.yml,deploy-relay.yml,relay-preview.yml,relay-preview-cleanup.yml(2) andweb-preview.ymlgit sparse-checkout setstep inrelease-desktop.yml(the 6 desktop build jobs) and indesktop-macos-preview.ymlThe headers,
Info.plistandVERSIONstay checked out. None of these jobs reads the archives: the only consumer isT3TerminalNative.podspec, which runs in the iOS build. The releasefinalizejob commits only namedpackage.jsonfiles and the lockfile, so excluded files never reach a commit.The
actions/checkoutjobs fetch with a blob filter when sparse, so they no longer download the archives at all. The two hand-written steps fetch without a filter, so for them this skips only the 49.5 MB disk write, whichrelease-desktop.ymlalready treats as worth tuning on Windows.mobile-showcase-screenshots.ymlkeeps the archives: it is a mobile workflow and its iOS job builds the app.Scope and approval
No issue: this is a focused CI maintenance change that applies an existing maintainer pattern from #20044 to the equivalent checkouts it did not cover. It changes no product behavior. The scope choice to confirm: every whole-repo checkout that never builds iOS gets the line, and mobile workflows are left alone.
Verification
8760d063e9with a blob filter,--depth=1and no-cone sparse patterns, with and without the new line. With it, checkout skipped both archive blobs (11,075 to 11,073 objects; both blobs absent from the object store), the working tree shrank by 49,489,024 bytes (exactly the two archives' sizes), and the headers,Info.plistandVERSIONstayed present.git fetchandgit sparse-checkout setform: both archives absent, the rest ofVendor/present, the same 129,790,036-byte working tree.vp run check:changedpassed on the final commit (format, typecheck, tests beside changes).actionlinton the changed workflows reports the same findings before and after (Blacksmith runner labels,concurrency.queue, and existing shellcheck notes). The change adds no new finding.git grepacross the changed workflows, the scripts they run and.github/actionsfound no reader oft3-terminal/Vendoroutside the iOS podspec.Not checked:
release.yml,release-desktop.ymlor the preview and deploy workflows. They need release secrets or labels, so the first run after merge is their first end-to-end check.Prior PRs
ci.yml. This PR applies the same line to the remaining checkouts.Generated with Claude Opus 5.5 and GPT-6.1 Sol in T3 Code Nightly