Skip to content
Open
Show file tree
Hide file tree
Changes from 49 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
54e13d2
ci(turbo): schedule nightly source sync
Aug 2, 2026
b5293d2
ci(turbo): avoid vendored checkout hooks
Aug 2, 2026
41c054e
ci(turbo): track upstream main snapshots
Aug 2, 2026
c90fe02
fix(turbo): repair inbound packaging notifications
Aug 2, 2026
b41c2ae
fix(turbo): authenticate inbound branch advancement
Aug 2, 2026
ff0e711
fix(turbo): persist inbound state metadata
Aug 2, 2026
1e13417
fix(ci): use available runners in fork
Aug 3, 2026
4983f0a
test(web): reduce image compression fixture cost
Aug 3, 2026
ee2c16a
docs(turbo): document inbound build pipeline
Aug 3, 2026
4149c17
docs(turbo): remove upstream contribution setup
Aug 3, 2026
2542d8b
docs(turbo): add nightly inbound runbook
Aug 3, 2026
8d02aaf
docs(turbo): align main operator instructions
Aug 3, 2026
672be54
ci: stop targeting Blacksmith runners, use GitHub-hosted runners
Aug 3, 2026
774c53d
feat(relay): support self-hosted deployments (#1)
gfsaaser24 Aug 3, 2026
b490449
feat: minimal self-host relay stack (CF + Clerk + Supabase, optional …
gfsaaser24 Aug 3, 2026
d49110a
fix(relay): plumb --yes to updateStateStore (CI first-deploy bootstra…
gfsaaser24 Aug 3, 2026
94bec6b
fix(alchemy): paginate zone list in worker hostname zone inference (#5)
gfsaaser24 Aug 4, 2026
7ba69c7
fix(deps): pnpm-patch alchemy zone inference pagination (#6)
gfsaaser24 Aug 4, 2026
37ea1bd
chore: T3 Turbo branding + release naming + skip npm publish (fork po…
gfsaaser24 Aug 4, 2026
a3f2e22
chore: brand web app + server CLI as T3 Turbo (#11)
gfsaaser24 Aug 4, 2026
2351617
fix(turbo): schedule exact nightly cutoffs
Aug 5, 2026
7bfe4fc
fix(turbo): align scheduled sync workflow
Aug 5, 2026
53a93a9
fix(desktop): register t3code protocols and explicit NSIS shortcuts o…
Aug 5, 2026
850457d
docs(operations): relay migration runbook + Cloudflare hosted-app dep…
Aug 5, 2026
d585534
docs(operations): end-to-end "Host your own T3 Code" ordering guide
Aug 5, 2026
0f6fdd9
fix(web): collapse the Initialize Git label in narrow chat headers
Aug 5, 2026
e75a787
fix(web): resolve more agent file references into clickable file chips
Aug 5, 2026
42b6733
style(docs): satisfy oxfmt on the hosting guide
Aug 5, 2026
61b148b
Merge pull request #20 from gfsaaser24/t3code/win-protocol-shortcuts
gfsaaser24 Aug 5, 2026
c003bb0
Merge pull request #24 from gfsaaser24/t3code/fix-init-git-overlap
gfsaaser24 Aug 5, 2026
d0fb86d
Merge pull request #26 from gfsaaser24/t3code/fix-markdown-file-links
gfsaaser24 Aug 5, 2026
3ae1875
Merge pull request #21 from gfsaaser24/t3code/fork-ops-docs
gfsaaser24 Aug 5, 2026
d847021
Merge pull request #18 from gfsaaser24/agent/t3-turbo-nightly-scheduler
gfsaaser24 Aug 6, 2026
d4bcb04
merge(main): bring fork main up to upstream main 239ef1c54
Aug 7, 2026
fed08c1
fix(server): stop losing live background agents on Claude session tea…
Aug 7, 2026
9478837
fix(server): route new reaper tests through the harness runtime
Aug 7, 2026
2a6cd82
fix(server): refresh binding lastSeenAt on provider-initiated turn ac…
Aug 7, 2026
559a6c5
docs: record unified reaper root cause and lastSeenAt heartbeat
Aug 7, 2026
422d8a7
fix(server): address review pass 1 findings on binding sync and teard…
Aug 7, 2026
92b72ae
fix(server): make the stale-exit guard identity-based, not hasSession…
Aug 7, 2026
725ed20
Merge pull request #39 from gfsaaser24/t3code/diagnose-agent-session-…
gfsaaser24 Aug 7, 2026
33433f5
chore(turbo): mirror the nightly sync workflow cutoff input to main
Aug 10, 2026
bb2fcf1
Merge pull request #51 from gfsaaser24/chore/mirror-nightly-workflow
gfsaaser24 Aug 10, 2026
e460915
fix(relay): stop main pushes from deploying stale relay code
Aug 10, 2026
315f8af
Merge pull request #59 from gfsaaser24/fix/relay-no-deploy-from-main
gfsaaser24 Aug 10, 2026
1ff162a
fix(threads): keep un-settled threads active after their PR merges
Aug 10, 2026
24d2564
Merge pull request #61 from gfsaaser24/fix/sticky-unsettle-and-postme…
gfsaaser24 Aug 10, 2026
b5e2074
feat(composer): show provider usage limits and stop the send button j…
Aug 10, 2026
1700076
fix(usage): correct token expiry, blank percentages, and stale meter …
Aug 10, 2026
861c88c
fix(usage): address review findings on the usage meters
Aug 10, 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
12 changes: 6 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ on:
- main

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

jobs:
check:
name: Check
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'pingdotgg/t3code' && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 10
steps:
- name: Checkout
Expand Down Expand Up @@ -59,7 +59,7 @@ jobs:

test:
name: Test
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'pingdotgg/t3code' && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 10
steps:
- name: Checkout
Expand Down Expand Up @@ -112,7 +112,7 @@ jobs:

mobile_native_static_analysis:
name: Mobile Native Static Analysis
runs-on: blacksmith-6vcpu-macos-26
runs-on: ${{ github.repository == 'pingdotgg/t3code' && 'blacksmith-6vcpu-macos-26' || 'macos-26' }}
timeout-minutes: 10
steps:
- name: Checkout
Expand Down Expand Up @@ -140,7 +140,7 @@ jobs:

release_smoke:
name: Release Smoke
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'pingdotgg/t3code' && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 10
steps:
- name: Checkout
Expand Down
51 changes: 47 additions & 4 deletions .github/workflows/deploy-relay.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
name: Deploy T3 Connect relay

# T3 Turbo: production relay deploys run from the fork's product mainline (`turbo`), where the
# relay source actually changes. This branch has diverged from it, so a push-triggered deploy here
# would ship stale relay code over the live one — it is how the speed-plan relay work stayed out of
# production. Manual dispatch only.
on:
push:
branches:
- main
workflow_dispatch:

permissions:
contents: read
Expand All @@ -17,26 +19,48 @@ concurrency:
jobs:
deploy_relay:
name: Deploy production relay
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ubuntu-24.04
timeout-minutes: 15
environment:
name: production
env:
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
DATABASE_HOST: ${{ vars.DATABASE_HOST }}
DATABASE_PORT: ${{ vars.DATABASE_PORT }}
DATABASE_NAME: ${{ vars.DATABASE_NAME }}
DATABASE_USER: ${{ vars.DATABASE_USER }}
# Legacy managed-PlanetScale fallback; DATABASE_* takes precedence.
PLANETSCALE_ORGANIZATION: ${{ vars.PLANETSCALE_ORGANIZATION }}
# Optional tracing; an incomplete Axiom pair disables export.
AXIOM_ORG_ID: ${{ vars.AXIOM_ORG_ID }}
RELAY_DOMAIN: ${{ vars.RELAY_DOMAIN }}
RELAY_API_ZONE_NAME: ${{ vars.RELAY_API_ZONE_NAME }}
RELAY_TUNNEL_ZONE_NAME: ${{ vars.RELAY_TUNNEL_ZONE_NAME }}
CLERK_PUBLISHABLE_KEY: ${{ vars.CLERK_PUBLISHABLE_KEY }}
CLERK_JWT_AUDIENCE: ${{ vars.CLERK_JWT_AUDIENCE }}
# Optional iOS push; an incomplete APNS_* set disables the APNs resources and runtime.
APNS_ENVIRONMENT: ${{ vars.APNS_ENVIRONMENT }}
APNS_TEAM_ID: ${{ vars.APNS_TEAM_ID }}
APNS_KEY_ID: ${{ vars.APNS_KEY_ID }}
APNS_BUNDLE_ID: ${{ vars.APNS_BUNDLE_ID }}
ALCHEMY_TELEMETRY_DISABLED: "1"
steps:
- id: cloudflare_config
name: Detect Cloudflare configuration
shell: bash
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
run: |
if [[ -n "${CLOUDFLARE_ACCOUNT_ID:-}" && -n "${CLOUDFLARE_API_TOKEN:-}" ]]; then
echo "enabled=true" >> "$GITHUB_OUTPUT"
exit 0
fi

echo "enabled=false" >> "$GITHUB_OUTPUT"
echo "::notice::Relay deployment skipped because Cloudflare credentials are not configured."

- name: Checkout
if: steps.cloudflare_config.outputs.enabled == 'true'
uses: actions/checkout@v6
with:
sparse-checkout: |
Expand All @@ -45,6 +69,7 @@ jobs:
sparse-checkout-cone-mode: false

- name: Setup Vite+
if: steps.cloudflare_config.outputs.enabled == 'true'
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
Expand All @@ -53,18 +78,36 @@ jobs:
args:
- --filter=t3code-relay...

- name: Report optional relay services
if: steps.cloudflare_config.outputs.enabled == 'true'
shell: bash
env:
AXIOM_TOKEN: ${{ secrets.AXIOM_TOKEN }}
APNS_PRIVATE_KEY: ${{ secrets.APNS_PRIVATE_KEY }}
run: |
if [[ -z "${AXIOM_TOKEN:-}" || -z "${AXIOM_ORG_ID:-}" ]]; then
echo "::notice::Axiom is not fully configured; hosted tracing is disabled."
fi

if [[ -z "${APNS_PRIVATE_KEY:-}" || -z "${APNS_ENVIRONMENT:-}" || -z "${APNS_TEAM_ID:-}" || -z "${APNS_KEY_ID:-}" || -z "${APNS_BUNDLE_ID:-}" ]]; then
echo "::notice::APNs is not fully configured; mobile push is disabled."
fi

- name: Deploy production relay stage
if: steps.cloudflare_config.outputs.enabled == 'true'
id: deploy
run: vp run --filter t3code-relay deploy --stage prod --yes --github-output
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
DATABASE_PASSWORD: ${{ secrets.DATABASE_PASSWORD }}
PLANETSCALE_API_TOKEN_ID: ${{ secrets.PLANETSCALE_API_TOKEN_ID }}
PLANETSCALE_API_TOKEN: ${{ secrets.PLANETSCALE_API_TOKEN }}
AXIOM_TOKEN: ${{ secrets.AXIOM_TOKEN }}
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
APNS_PRIVATE_KEY: ${{ secrets.APNS_PRIVATE_KEY }}

- name: Publish relay deploy commit status
if: steps.cloudflare_config.outputs.enabled == 'true'
uses: actions/github-script@v8
with:
script: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mobile-eas-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
if: |
contains(github.event.pull_request.labels.*.name, '🚀 Mobile Continuous Deployment') &&
(github.event.action != 'labeled' || github.event.label.name == '🚀 Mobile Continuous Deployment')
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ubuntu-24.04
concurrency:
group: mobile-eas-preview-${{ github.event.pull_request.number }}
cancel-in-progress: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mobile-eas-production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ on:
jobs:
production:
name: EAS Production ${{ inputs.mode }}
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ubuntu-24.04
permissions:
contents: read
env:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/mobile-showcase-screenshots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
ios:
name: iPhone 6.9, iPhone 6.5, and iPad 13
if: inputs.platform == 'all' || inputs.platform == 'ios'
runs-on: blacksmith-12vcpu-macos-26
runs-on: macos-26
timeout-minutes: 60
steps:
- name: Checkout
Expand Down Expand Up @@ -79,7 +79,7 @@ jobs:
android:
name: Android phone, 7-inch tablet, and 10-inch tablet
if: inputs.platform == 'all' || inputs.platform == 'android'
runs-on: blacksmith-16vcpu-ubuntu-2404
runs-on: ubuntu-24.04
timeout-minutes: 60
env:
T3_SHOWCASE_ANDROID_ABI: x86_64
Expand Down
Loading
Loading