Repository navigation
chore: sync with upstream pingdotgg/t3code main #184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
94 commits
Select commit
Hold shift + click to select a range
781cc55
perf(mobile): flatten large file trees without copying descendants (#…
luke2x 80ae9b5
fix(web): show theme conflicts even when another import fails (#23223)
only21mil 061dc79
fix(usage): reject cyclic model mappings before saving (#23963)
only21mil bae3c19
fix(settings): offer Use existing CLI in managed Codex settings (#23160)
only21mil 1e95da7
fix(git): honor project provider settings (#23672)
parmartejass efb940d
fix(desktop): force-close stalled Linux MIME cache helpers (#25210)
maria-rcks bdf84df
fix(cli): auth pairing create rejects a --base-url without http(s)://…
MarcoDotIO 4afdaba
fix(server): signed asset and upload URLs stay out of HTTP traces (#2…
only21mil 1cc9d41
fix(server): clone errors no longer show a token from the URL's query…
only21mil c9d3f7c
fix(claude): pass every --add-dir launch directory to Claude (#23281)
only21mil 4b7a347
fix(composer): retry expired catalogs after failed discovery (#23174)
only21mil 7860ee9
fix(auth): preserve pairing codes after scope rejection (#25222)
maria-rcks 04f3538
fix(mobile): discard unchanged queued edits after starting (#25232)
maria-rcks b7c7a78
fix(server): t3 project commands wait for a busy server's reply (#24090)
only21mil 9d38d68
fix(web): wait for fresh diff pages in review guides (#23225)
only21mil 99ff58a
fix(server): Antigravity stops retrying session startup while signed …
only21mil de386ad
fix(web): create tasks on a permitted connected environment (#23244)
only21mil fa2a2dc
fix(mobile): recognize this thread's main checkout (#23764)
only21mil 06ded0b
fix(web): keep usage hubs that share a host (#23767)
only21mil f8646e0
fix(github): read text and mixed-case pull request templates (#25025)
maria-rcks de2b1d3
fix(web): keep HTML prototype selection rings visible (#23745)
stevan-borus 12bd9d6
fix(mobile): list pull request repositories once per environment (#25…
maria-rcks 4e274ae
fix(shared): Open in Zed prefers zeditor over the ZFS zed on Linux (#…
pujitha24 ef51594
fix(server): native Codex subagents no longer show the parent's reaso…
koushikxd 3bd64cf
fix(server): mark unread works after an automatic compaction (#25286)
flamboh a1621a8
fix(server): show MCP App forms from failed tool results (#25225)
maria-rcks ad5ba43
fix(server): restore Linux session display for editor launches (#25228)
maria-rcks 9e60e94
fix(usage): keep host identity across container recreation (#25220)
maria-rcks d796063
fix(opencode): authenticate with the resolved server password (#25230)
maria-rcks f06dd4b
feat(web): allow resizing the file explorer (#25737)
maria-rcks f4147dd
fix(server): update shared Codex installs from their owning home (#25…
maria-rcks 8bcc991
fix(cli): keep published runtimes in place during installation (#24092)
only21mil e836ab1
fix(web): right panel launcher letters work on non-Latin keyboard lay…
MarMarLabs 5b4f2aa
fix(server): report a deleted or replaced ownership lock (#21886)
ScottN-PV cb5fac9
fix(server): mark unread no longer brings back a dismissed wake (#24080)
fixfon fa4f3a2
fix(mobile): stop refreshes in hidden PR Guide panes (#25486)
saphid b6fbd18
fix(desktop): installing the t3 command no longer reports its own lau…
Gourav224 1fe8ddd
test(mobile): load the branch occupancy test without native sources (…
maria-rcks 08a463e
fix(settings): project edits keep overrides the client does not know …
only21mil 4092c4a
fix(client): retry the permissions check after a reconnect (#27008)
juliusmarminge da04ebc
fix(mobile): tab bar spans the screen on iOS before 26 (#27089)
juliusmarminge 624e70e
perf(server): thread recovery reads are 10x faster (#27099)
juliusmarminge 3898c32
perf(server): source control discovery no longer stalls up to 10s on …
juliusmarminge 7f39a86
perf: huge checkpoints ship up to 75x smaller to clients (#27110)
juliusmarminge 8bf4822
perf(server): sidebar shell loads 3x faster and startup thread counts…
juliusmarminge 22c37a8
perf(server): preparing a run is 15x faster and uses 200x less memory…
juliusmarminge 2f4da5d
feat(server): traces name what grew the heap, for ~0.3µs per span (#2…
juliusmarminge 52f4ec6
perf(gitcafe): PR sync makes 2x fewer GitCafe requests for unchanged …
juliusmarminge facaa08
perf(shared): SQLite reads stop queueing behind each other, up to 5x …
juliusmarminge 7c29f2d
perf(server): git status runs in parallel and repo detection spawns 3…
juliusmarminge 65b0ab8
fix(client): dead connection routes are probed 30x less often (#27101)
juliusmarminge dd14848
perf(server): idle servers run 100x fewer background queries and 4.8M…
juliusmarminge 812c0a7
feat(devices): support Android EAS Simulator sessions (#26797)
SchroederNathan cba3059
fix(web,mobile): image-only messages show the image, not the placehol…
maria-rcks b42adff
ci(mobile): production deploys use a Release Manager Expo token (#27285)
juliusmarminge f58fad0
ci(mobile): maintainers can deploy EAS previews for reviewed fork com…
juliusmarminge d7b6cf7
fix(server): agents yield CPU, tasks, and reclaim to the server under…
juliusmarminge 44d508f
feat(server): `t3 service protect` keeps the server alive when agents…
juliusmarminge 8ab098a
fix(server): held queues release agent and scheduled messages once th…
juliusmarminge 36dac68
fix(server): restart continuations retry failed starts and respect a …
juliusmarminge 6d12bb1
fix(server): Stop during a restart no longer leaves the thread stuck …
t3dotgg 8970a32
fix(scripts): bound check:changed concurrency and step time (#27227)
juliusmarminge c8a606c
fix(shared): durations under 10s drop a trailing .0 (#27316)
maria-rcks f48fb51
feat(web): switch the composer between rich text and Markdown source …
maria-rcks a773dc3
fix(server): t3_thread_organize rejects unknown arguments instead of …
juliusmarminge aa11ef6
fix(web): composer Markdown source button shows the pilcrow again (#2…
maria-rcks 3dd62dc
revert(web): remove the composer rich text toggle button and mod+/ sh…
maria-rcks 2ba2426
fix(server): HTML preview browsers quit when done instead of waiting …
juliusmarminge 05f0d9b
fix(terminal): retain and pace slow fallback process queries (#24640)
juliusmarminge f3b0194
fix(server): show readable provider runtime failure banners (#24614)
juliusmarminge 2c119bd
fix(gitlab): share merge request reads across detail and checks (#24392)
juliusmarminge adba9a3
fix(usage): count Claude advisor calls under the advisor model (#24139)
fixfon d5536f6
fix(web): name the sidebar logo link T3 Code home (#24209)
shivamhwp 0a455d7
fix(server): fail Claude turns waiting for unsupported mod input (#24…
juliusmarminge 6b1245c
fix(server): Stop always completes, and an agent that ignores it can …
juliusmarminge 35c1210
fix: guest links can load earlier turns (#27354)
juliusmarminge da8cc59
fix(ci): repair main after merge burst
juliusmarminge fa4e467
fix(server): let slow worktree checkouts finish (#23802)
juliusmarminge 97e35bc
feat(settings): point provider environment variables at a secret prov…
yordis 476590d
feat(desktop): back/forward buttons and trackpad swipe navigation (#2…
juliusmarminge 5ef5685
feat(web): review local commits in the Diff pane (#19941)
Bil0000 305a90d
fix(relay): show the account's real tunnel cap in T3 Connect settings…
juliusmarminge 5cbc207
fix(web): streaming replies no longer re-render every visible timelin…
juliusmarminge d8c926c
perf(web): streaming replies re-render only their last Markdown block…
juliusmarminge aaee774
perf(web): the git actions panel no longer re-renders on every stream…
juliusmarminge 3cbc982
perf(web): streamed assistant text re-renders only its own row (#27419)
juliusmarminge 32ecd71
fix(server): `t3 service protect` can ask for your sudo password (#27…
juliusmarminge 28ea8f2
chore: sync with upstream pingdotgg/t3code main
yordis ebfe47d
feat(secrets): read from OpenBao and AWS Secrets Manager
yordis eaf1ada
feat(secrets): check secret references and carry earlier secret setti…
yordis 53e10fe
feat(web): edit, check, and pick OpenBao and AWS secret providers
yordis 455c799
docs: describe the secret stores the fork adds on upstream's secret p…
yordis 56107ae
chore: drop imports the secret port left unused
yordis fc513c3
test(web): relay telemetry bridge stub answers app branding
yordis File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,145 @@ | ||
| name: Mobile EAS Preview (Fork) | ||
|
|
||
| # EAS previews for fork PRs. This runs the PR's code with an Expo token: the | ||
| # app config and plugins run on this runner, and native builds run on EAS | ||
| # with preview signing credentials. The label is the maintainer's sign-off | ||
| # that they reviewed that code, so it covers exactly the commit it was applied | ||
| # to: this pins that commit and consumes the label before running anything. A | ||
| # later push deploys nothing until the label is applied again. | ||
| # | ||
| # Same-repo PRs deploy on every push while labeled, via mobile-eas-preview.yml. | ||
|
|
||
| on: | ||
| pull_request_target: | ||
| types: [labeled] | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| preview: | ||
| name: EAS Preview | ||
| if: >- | ||
| github.event.pull_request.head.repo.full_name != github.repository && | ||
| github.event.label.name == '🚀 Mobile Continuous Deployment' | ||
| runs-on: blacksmith-8vcpu-ubuntu-2404 | ||
| concurrency: | ||
| group: mobile-eas-preview-fork-${{ github.event.pull_request.number }} | ||
| cancel-in-progress: true | ||
| permissions: | ||
| contents: read | ||
| pull-requests: write | ||
| env: | ||
| APP_VARIANT: preview | ||
| NODE_OPTIONS: --max-old-space-size=8192 | ||
| MOBILE_VERSION_POLICY: fingerprint | ||
| steps: | ||
| # If a maintainer removed the label first, that removal wins. | ||
| - id: consume | ||
| name: Consume the deployment label | ||
| uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 | ||
| with: | ||
| script: | | ||
| try { | ||
| await github.rest.issues.removeLabel({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| issue_number: context.payload.pull_request.number, | ||
| name: context.payload.label.name, | ||
| }); | ||
| core.setOutput("consumed", "true"); | ||
| } catch (error) { | ||
| if (error.status !== 404) throw error; | ||
| core.info("The label was removed before this run could consume it. Skipping."); | ||
| core.setOutput("consumed", "false"); | ||
| } | ||
| - id: expo-token | ||
| name: Check for EXPO_PREVIEW_TOKEN | ||
| if: steps.consume.outputs.consumed == 'true' | ||
| env: | ||
| EXPO_TOKEN: ${{ secrets.EXPO_PREVIEW_TOKEN }} | ||
| run: | | ||
| if [ -n "$EXPO_TOKEN" ]; then | ||
| echo "present=true" >> "$GITHUB_OUTPUT" | ||
| else | ||
| echo "present=false" >> "$GITHUB_OUTPUT" | ||
| echo "EXPO_PREVIEW_TOKEN is not set; skipping EAS preview." | ||
| fi | ||
| # The head SHA from the label event, not the branch, so a push after the | ||
| # label cannot swap in unreviewed code. No credentials stay in .git for | ||
| # the PR's scripts to read. | ||
| - name: Checkout reviewed commit | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| ref: ${{ github.event.pull_request.head.sha }} | ||
| fetch-depth: 0 | ||
| persist-credentials: false | ||
| # No sparse-checkout: see mobile-eas-preview.yml. | ||
|
|
||
| # No caches: pull_request_target saves them under main's scope, where | ||
| # trusted workflows with other secrets would restore what PR code wrote. | ||
| - name: Setup Vite+ | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| uses: voidzero-dev/setup-vp@v1 | ||
| with: | ||
| node-version-file: package.json | ||
| cache: false | ||
| run-install: | | ||
| args: | ||
| - --filter=@t3tools/mobile... | ||
| - name: Expose pnpm | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| run: | | ||
| pnpm_version="$(node --print "require('./package.json').packageManager.split('@').pop()")" | ||
| vp_pnpm_bin="$HOME/.vite-plus/package_manager/pnpm/$pnpm_version/pnpm/bin" | ||
| echo "$vp_pnpm_bin" >> "$GITHUB_PATH" | ||
| "$vp_pnpm_bin/pnpm" --version | ||
| - name: Setup EAS | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| uses: expo/expo-github-action@v8 | ||
| with: | ||
| # Pinned and installed with npm for the same reasons as mobile-eas-preview.yml. | ||
| eas-version: 21.8.0 | ||
| eas-cache: false | ||
| token: ${{ secrets.EXPO_PREVIEW_TOKEN }} | ||
| packager: npm | ||
|
|
||
| - name: Pull preview environment variables | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| working-directory: apps/mobile | ||
| env: | ||
| EXPO_TOKEN: ${{ secrets.EXPO_PREVIEW_TOKEN }} | ||
| run: | | ||
| eas env:pull preview --non-interactive | ||
| # See mobile-eas-preview.yml: keeps Android build and OTA fingerprints matching. | ||
| node --input-type=module <<'NODE' | ||
| import { appendFileSync, readFileSync } from "node:fs"; | ||
| import { parseEnv } from "node:util"; | ||
| const env = parseEnv(readFileSync(".env.local", "utf8")); | ||
| const googleServicesFile = env.T3CODE_ANDROID_GOOGLE_SERVICES_FILE; | ||
| if (googleServicesFile) { | ||
| appendFileSync(process.env.GITHUB_ENV, `T3CODE_ANDROID_GOOGLE_SERVICES_FILE=${googleServicesFile}\n`); | ||
| } | ||
| NODE | ||
| - name: Deploy with fingerprint check | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| uses: expo/expo-github-action/continuous-deploy-fingerprint@main | ||
| env: | ||
| EXPO_TOKEN: ${{ secrets.EXPO_PREVIEW_TOKEN }} | ||
| RUNNER_DEBUG: "1" | ||
| # The action only comments for pull_request events; this hook gives | ||
| # it the PR under pull_request_target. Without it, it skips the comment. | ||
| EXPO_TEST_GITHUB_PULL: ${{ github.event.pull_request.number }} | ||
| with: | ||
| profile: preview:dev | ||
| branch: pr-${{ github.event.pull_request.number }} | ||
| platform: all | ||
| environment: preview | ||
| working-directory: apps/mobile | ||
| github-token: ${{ secrets.GITHUB_TOKEN }} | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unpinned actions in fork deploy
High Severity
The new
pull_request_targetfork workflow runs withEXPO_PREVIEW_TOKENandpull-requests: write, but it pullscontinuous-deploy-fingerprint@mainplus floatingcheckout@v6,setup-vp@v1, andexpo-github-action@v8. The same-repo preview workflow pins those actions to SHAs, including a pin that avoids an eas-cli JSON break. An unpinned@mainaction can change under this job and read those secrets, and it can also drift from the eas-cli 21.8.0 workaround the sibling workflow documents.Additional Locations (2)
.github/workflows/mobile-eas-preview-fork.yml#L85-L86.github/workflows/mobile-eas-preview-fork.yml#L103-L104Reviewed by Cursor Bugbot for commit fc513c3. Configure here.