Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
9fb20cf
fix: cache project favicons across web and mobile (#4767)
gabrielelpidio Jul 30, 2026
f638505
perf(ci): cut stale runs and redundant setup (#4802)
t3dotgg Jul 30, 2026
299a2dc
chore(mobile): bump app version to 1.0.1
juliusmarminge Jul 30, 2026
f3467b2
style(web): make scroll-to-end pill translucent (#5036)
maria-rcks Jul 30, 2026
506127d
fix(ci): drop sparse-checkout from EAS workflows
juliusmarminge Jul 30, 2026
4f77164
fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:/…
juliusmarminge Jul 30, 2026
a64c05d
perf(server): cache default branch name and origin existence across s…
UtkarshUsername Jul 30, 2026
e0a7471
feat(shared): support shorthand (major-only) versions in the semver h…
arhxam Jul 30, 2026
4ce12bf
fix(mobile): remove unnecessary photo library permission (#4929)
skjiisa Jul 30, 2026
c03692b
fix(shared): lenient JSON parser deletes commas inside string values …
arhxam Jul 30, 2026
4a91a25
fix(mobile): default bare IP pairing to HTTP (#4990)
Lucenx9 Jul 30, 2026
4840802
fix(mobile): restore iOS Threads branding (#4862)
PixPMusic Jul 30, 2026
8e60310
chore: add mobile issue template area (#4895)
MaxAnderson95 Jul 30, 2026
0bf48bf
fix(desktop): link release notes from the update downloaded toast (#4…
Sy-D Jul 30, 2026
a9bbe0e
fix(mobile): accept Android clipboard images in composer (#4836)
adityavardhansharma Jul 30, 2026
f718bf0
fix(mobile): show the correct build channel in Android's Threads page…
PixPMusic Jul 30, 2026
df90fae
fix(contracts): decode growing config unions forward-compatibly (#5055)
juliusmarminge Jul 30, 2026
fb4b010
fix(mobile): server model, worktree, and origin preferences now apply…
t3dotgg Jul 31, 2026
8996a07
fix(ci): repair the mobile showcase screenshots workflow (#5057)
juliusmarminge Jul 31, 2026
9fb6673
fix(ci): capture iPad App Store screenshots in landscape (#5065)
PixPMusic Jul 31, 2026
02758db
fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm la…
mwolson Jul 31, 2026
7d99330
fix: adapt upstream L1 cherry-picks to fork
cursoragent Aug 6, 2026
a1922f7
fix: format index.css for vp check
cursoragent Aug 6, 2026
7eaa4a6
fix: address CodeRabbit review on L1 sync
cursoragent Aug 6, 2026
fa36608
fix: format index.css for vp check
cursoragent Aug 6, 2026
7d52eed
fix: format index.css with vp 0.2.2
cursoragent Aug 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/test-t3-mobile/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Use these client origins:
- Android Emulator: `http://10.0.2.2:<server-port>`
- Physical device: bind the backend to `0.0.0.0` and use the host's reachable LAN origin

Always enter the complete `http://` origin; the mobile host field otherwise assumes HTTPS. When testing web and mobile together, run `vp run dev --home-dir <base-dir> --host 127.0.0.1` instead and do not launch a second backend over the same base directory.
Enter the complete `http://` origin to make the test transport explicit. Bare IP addresses default to HTTP, while bare hostnames default to HTTPS. When testing web and mobile together, run `vp run dev --home-dir <base-dir> --host 127.0.0.1` instead and do not launch a second backend over the same base directory.

## Start or reuse Metro safely

Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ body:
- apps/web
- apps/server
- apps/desktop
- apps/mobile
- packages/contracts or packages/shared
- Build, CI, or release tooling
- Docs
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ body:
- apps/web
- apps/server
- apps/desktop
- apps/mobile
- packages/contracts or packages/shared
- Build, CI, or release tooling
- Docs
Expand Down
32 changes: 30 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ on:
branches:
- main

concurrency:
group: ci-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
check:
name: Check
Expand All @@ -20,6 +24,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
Expand Down Expand Up @@ -75,6 +84,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
Expand Down Expand Up @@ -175,13 +189,20 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=@t3tools/scripts...

- name: Install mobile native static analysis tools
run: brew bundle install --file apps/mobile/Brewfile
Expand All @@ -196,13 +217,20 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=@t3tools/scripts...

- name: Exercise release-only workflow steps
run: node scripts/release-smoke.ts
9 changes: 8 additions & 1 deletion .github/workflows/deploy-relay.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,20 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=t3code-relay...

- name: Deploy production relay stage
id: deploy
Expand Down
17 changes: 15 additions & 2 deletions .github/workflows/mobile-eas-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,20 @@ on:
pull_request:
types: [opened, reopened, synchronize, labeled, unlabeled]

concurrency:
group: mobile-eas-preview-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
preview:
name: EAS Preview
# Fork-only and label-gated. Keep this off upstream and avoid private
# upstream runners; the token check below skips the body when EAS is not
# configured for the fork.
if: github.repository == 'aaditagrawal/t3code' && contains(github.event.pull_request.labels.*.name, '🚀 Mobile Continuous Deployment')
if: |
github.repository == 'aaditagrawal/t3code' &&
contains(github.event.pull_request.labels.*.name, '🚀 Mobile Continuous Deployment') &&
(github.event.action != 'labeled' || github.event.label.name == '🚀 Mobile Continuous Deployment')
runs-on: ubuntu-24.04
permissions:
contents: read
Expand All @@ -37,14 +44,20 @@ jobs:
uses: actions/checkout@v6
with:
fetch-depth: 0
# No sparse-checkout here: it makes actions/checkout fetch with
# --filter=blob:none, and eas-cli archives the project via
# `git clone --depth 1 file://<workspace>`, which fails (exit 128)
# when the partial clone can't serve the unfetched blobs.

- name: Setup Vite+
if: steps.expo-token.outputs.present == 'true'
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=@t3tools/mobile...

- name: Expose pnpm
if: steps.expo-token.outputs.present == 'true'
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/mobile-eas-production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,20 @@ jobs:
uses: actions/checkout@v6
with:
fetch-depth: 0
# No sparse-checkout here: it makes actions/checkout fetch with
# --filter=blob:none, and eas-cli archives the project via
# `git clone --depth 1 file://<workspace>`, which fails (exit 128)
# when the partial clone can't serve the unfetched blobs.

- name: Setup Vite+
if: steps.expo-token.outputs.present == 'true'
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=@t3tools/mobile...

- name: Expose pnpm
if: steps.expo-token.outputs.present == 'true'
Expand Down
22 changes: 20 additions & 2 deletions .github/workflows/mobile-showcase-screenshots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,22 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=@t3tools/mobile...
- --filter=@t3tools/scripts...
- --filter=t3...

- name: Expose pnpm
run: |
Expand Down Expand Up @@ -77,13 +86,22 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=@t3tools/mobile...
- --filter=@t3tools/scripts...
- --filter=t3...

- name: Expose pnpm
run: |
Expand Down
52 changes: 48 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ jobs:
uses: actions/checkout@v6
with:
fetch-depth: 0
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- id: check
name: Compare HEAD to last nightly tag
Expand Down Expand Up @@ -91,6 +95,10 @@ jobs:
uses: actions/checkout@v6
with:
fetch-depth: 0
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
Expand Down Expand Up @@ -213,6 +221,10 @@ jobs:
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
Expand Down Expand Up @@ -302,14 +314,19 @@ jobs:
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
fetch-depth: 0
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=t3...

- name: Build node-pty linux-x64 prebuild
shell: bash
Expand Down Expand Up @@ -394,14 +411,21 @@ jobs:
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
fetch-depth: 0
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true
run-install: |
args:
- --filter=@t3tools/desktop...
- --filter=t3...
- --filter=@t3tools/scripts...

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
Expand Down Expand Up @@ -698,6 +722,10 @@ jobs:
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
Expand Down Expand Up @@ -778,6 +806,10 @@ jobs:
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
Expand Down Expand Up @@ -915,6 +947,10 @@ jobs:
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
Expand Down Expand Up @@ -1034,6 +1070,10 @@ jobs:
fetch-depth: 0
token: ${{ steps.app_token.outputs.token }}
persist-credentials: true
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- id: app_bot
name: Resolve GitHub App bot identity
Expand Down Expand Up @@ -1104,6 +1144,10 @@ jobs:
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
Expand Down
1 change: 0 additions & 1 deletion apps/desktop/src/app/DesktopAppIdentity.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ const makeElectronAppLayer = (calls: ElectronAppCalls) =>
calls.setAboutPanelOptions.push(options);
}),
setAppUserModelId: () => Effect.void,
requestSingleInstanceLock: Effect.succeed(true),
getAppMetrics: Effect.succeed([]),
isDefaultProtocolClient: () => Effect.succeed(false),
setAsDefaultProtocolClient: () => Effect.succeed(true),
Expand Down
Loading
Loading