Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
9cf10ef
feat(tim): import tim-smart/t3code#4
tim-smart Jul 26, 2026
dbe899d
feat(tim): import tim-smart/t3code#5
tim-smart Jul 26, 2026
273b3ff
feat(tim): import tim-smart/t3code#6
tim-smart Jul 26, 2026
a1c856a
feat(tim): import tim-smart/t3code#7
tim-smart Jul 26, 2026
177c6ea
feat(tim): import tim-smart/t3code#8
tim-smart Jul 26, 2026
e3aff5e
feat(tim): import tim-smart/t3code#9
tim-smart Jul 26, 2026
c91cb28
feat(tim): import tim-smart/t3code#10
tim-smart Jul 26, 2026
6f53210
feat(tim): import tim-smart/t3code#11
tim-smart Jul 26, 2026
30913db
feat(tim): import tim-smart/t3code#12
tim-smart Jul 26, 2026
aaf3356
feat(tim): import tim-smart/t3code#13
tim-smart Jul 26, 2026
bcba6c8
feat(tim): import tim-smart/t3code#14
tim-smart Jul 26, 2026
8270f08
feat(tim): import tim-smart/t3code#15
tim-smart Jul 26, 2026
1b21d67
feat(tim): import tim-smart/t3code#16
tim-smart Jul 26, 2026
db92664
feat(tim): import tim-smart/t3code#17
tim-smart Jul 26, 2026
e01f7fc
test(tim-compat): gate macOS bundle fixture to Darwin
patroza Jul 26, 2026
f2a7af8
fix(tim-compat): avoid plutil for custom open-with apps
patroza Jul 26, 2026
a475be8
fix(tim-compat): product-merge VCS #4727 with fork failureKind; green…
github-actions[bot] Jul 29, 2026
d574b4d
fix(tim): restore resource telemetry join + TRACE2 hook exits
github-actions[bot] Jul 29, 2026
3a76d24
chore: initialize upstream candidate registry
patroza Jul 25, 2026
b5ed49c
perf: import bounded web thread history (upstream #4018) (#29)
patroza Jul 25, 2026
4c2742e
perf: import mobile pagination and bounded replay (upstream #3510) (#35)
patroza Jul 25, 2026
b69c53e
perf: import bounded long-lived state (upstream #4176) (#34)
patroza Jul 25, 2026
88879e0
feat(web): import answered question timeline (upstream #4506) (#44)
patroza Jul 25, 2026
3206627
feat(orchestrator): import upstream follow-up queue (#4245) (#63)
patroza Jul 25, 2026
c9ba5b4
fix(client-runtime): re-read network status when the app resumes (ups…
patroza Jul 26, 2026
853fcf4
perf(server): compress and cache packaged web assets (upstream #4516)
patroza Jul 26, 2026
1085a06
perf(server): back off repeated checkpoint capture failures (upstream…
patroza Jul 26, 2026
3cadf0e
fix(server): preserve manually renamed thread titles (upstream #4558)
patroza Jul 26, 2026
64b9b0c
fix(web): avoid woke status overlap after snooze closes (upstream #4539)
patroza Jul 26, 2026
91d6bb1
fix(candidates): rejoin follow-up queue types after tim tip green
github-actions[bot] Jul 29, 2026
98e043c
fix(candidates): expect thread.unsnoozed on settled turn starts
github-actions[bot] Jul 29, 2026
0171937
docs(fork): agent gates, stack policy, and operator docs
github-actions[bot] Jul 29, 2026
ef68d36
chore(stack): durable stack manifests and overlay ownership
github-actions[bot] Jul 29, 2026
3e47e2c
feat(fork-stack): stack sync, feature rebase, and overlay compose
github-actions[bot] Jul 29, 2026
d15ba2b
ci: fork CI, mobile EAS delivery, and deploy scope
github-actions[bot] Jul 29, 2026
183460d
feat(contracts): fork protocol and settings schema extensions
github-actions[bot] Jul 29, 2026
522898d
feat(shared): shared helpers and Hermes lint guards
github-actions[bot] Jul 29, 2026
cf36978
feat(client-runtime): reconnect diagnostics, VCS actions, and list state
github-actions[bot] Jul 29, 2026
8589955
feat(packages): ssh, tailscale, and effect-acp fork deltas
github-actions[bot] Jul 29, 2026
2ae6f2a
feat(server): queue, recovery, VCS, Jira, and orchestration fork product
github-actions[bot] Jul 29, 2026
b769050
feat(web): sidebar lists, composer, timeline, and chrome fork product
github-actions[bot] Jul 29, 2026
fe5f05e
feat(mobile): home modes, board, queue composer, and EAS identity
github-actions[bot] Jul 29, 2026
31e5e43
feat(desktop): fork desktop packaging and open-with deltas
github-actions[bot] Jul 29, 2026
8fc3816
chore(fork): workspace root, lockfile, and planning artifacts
github-actions[bot] Jul 29, 2026
c346f8e
feat(web): align Recent mode across Sidebar V1/V2 without VCS on sett…
patroza Jul 29, 2026
cf5cd12
chore(stack): re-register open draft overlay PRs #173–#175
github-actions[bot] Jul 29, 2026
5e37b40
feat: persist thread grouping + blue draft dots (#176)
patroza Jul 29, 2026
bae47e0
chore(stack): durable Tim conflictResolutions for upstream #4/#5 paths
github-actions[bot] Jul 29, 2026
2a718ba
chore(stack): conflictResolutions for fork/tim (attempt 1)
github-actions[bot] Jul 29, 2026
2349a50
chore(stack): conflictResolutions for fork/tim (attempt 2)
github-actions[bot] Jul 29, 2026
5ec50e1
chore(stack): conflictResolutions for fork/candidates (attempt 3)
github-actions[bot] Jul 29, 2026
5ac282c
chore(stack): conflictResolutions for fork/candidates (attempt 4)
github-actions[bot] Jul 29, 2026
24f41dd
chore(stack): conflictResolutions for fork/changes (attempt 1)
github-actions[bot] Jul 29, 2026
570ec6a
fix(server): stop list VCS sweeps from blocking websocket tickets (#178)
patroza Jul 29, 2026
bea412a
feat(server): 24h debug logs for all inbound webhooks (#177)
omegent-app[bot] Jul 29, 2026
853591f
fix(stack): restore main telemetry/product APIs after restack
github-actions[bot] Jul 29, 2026
6e042ca
test(server): expect kimi in ProviderRegistry provider list
github-actions[bot] Jul 29, 2026
ec009ce
test(server): poll re-probe with live clock under TestClock
github-actions[bot] Jul 29, 2026
67fdbf3
fix(server): match Jira wiki accountId mentions via bot account id (#…
omegent-app[bot] Jul 29, 2026
b547b3f
ci: compose fork/integration on changes and overlay landings
github-actions[bot] Jul 29, 2026
1727760
fix(changes): rejoin product after candidates rebase
github-actions[bot] Jul 29, 2026
c68dafc
fix(mobile): keep settled shelf under Threads v2 and classic Recent (…
patroza Jul 29, 2026
2e587e8
docs(stack): ship path; keep restack workflow disabled (#179)
patroza Jul 29, 2026
f81b79e
fix(grok): keep Build in agent mode, Plan in plan mode (#187)
omegent-app[bot] Jul 29, 2026
db57af7
fix(server): import ProviderInteractionMode in GrokAcpSupport (#189)
patroza Jul 29, 2026
10246bf
ci: auto-rebase overlays before compose (fast ship) (#190)
patroza Jul 30, 2026
b2abc0f
feat(server): join-or-create threads for Jira + GitHub work items (#191)
omegent-app[bot] Jul 30, 2026
72e240e
ci: require Fork CI on overlay-base PRs and document local gate (#193)
patroza Jul 30, 2026
84cd9c6
feat(server): map Jira project keys to T3 projects and ack reactions …
omegent-app[bot] Jul 30, 2026
7456783
fix(server): post Jira bridge responses as threaded replies (#200)
omegent-app[bot] Jul 30, 2026
0903bc4
fix(server): recreate missing worktree on bootstrap (#197)
patroza Jul 30, 2026
d1c0625
fix(mobile): restore composer queue API after restack conflict resolv…
patroza Jul 30, 2026
40891be
chore(stack): register fork/identity integration overlay (#204)
omegent-app[bot] Jul 30, 2026
ae95f33
fix(web): restore AI usage indicators + host resource gauges (#208)
omegent-app[bot] Jul 30, 2026
5668df4
ci: run Fork CI for PRs targeting fork/identity overlay (#214)
patroza Jul 30, 2026
abb8b15
fix(stack): repair post-restack CI breakage from product merges (#215)
patroza Jul 30, 2026
ef0571e
fix(server): repair skipped title migration (#217)
patroza Jul 30, 2026
b47c385
disk tmp
github-actions[bot] Jul 30, 2026
e31e03d
fix(server): use single RPC authorization scope table at runtime (#220)
patroza Jul 30, 2026
40864d6
docs: define cross-client feature parity
github-actions[bot] Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .agents/skills/test-t3-app/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,23 @@ Shared browser dev is single-origin: Vite proxies the backend paths, so never se

The dev runner disables browser auto-open by default. Do not pass `--browser` during automated testing: an automatically opened page can consume the one-time bootstrap token before the controlled browser uses it.

### Previewing the dev server from a remote client

When T3 itself is being driven from another machine — the app connected to this environment over a
tailnet or LAN address rather than `localhost` — a dev server bound to loopback is not reachable at
that address just because the hostname is. Opening it does **not** require `--share`: the
environment resolves the port on demand, reusing an existing `tailscale serve` route, using the
environment's own address when the port already answers there, and otherwise publishing a
tailnet-only HTTPS route for the port and withdrawing it when the dev server exits.

Give the preview a `localhost:<port>` URL and let it resolve. Never hand-write the environment's
hostname with the dev port appended — that is the shape that fails, because nothing promises the
dev port is published under the same number or scheme.

If the port cannot be made reachable, the preview reports why and what to do (dev server not
running, tailscale not logged in, no permission to manage routes, tailnet port already taken).
Treat that message as the result; do not retry the same URL.

### Verify a shared environment before human handoff

When another person will use the printed pairing URL, first open the shared origin without the pairing path or fragment in the controlled browser and confirm the T3 Code app loads. This browser navigation is required even when curl succeeds because browsers block some otherwise reachable ports before making a network request.
Expand Down
21 changes: 21 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,17 @@
# Get this from your relay deployment. `infra/relay` deploys update it automatically.
# T3CODE_RELAY_URL=https://relay.example.com

# Optional: GitHub App bridge for continuing an existing worktree-backed T3 thread
# from a pull-request comment. See docs/integrations/github-app-setup.md.
# The webhook route stays disabled unless all four required values are set.
# T3CODE_GITHUB_APP_ID=123456
# T3CODE_GITHUB_APP_PRIVATE_KEY_PATH=/absolute/path/to/private-key.pem
# T3CODE_GITHUB_WEBHOOK_SECRET=replace-with-a-random-secret
# T3CODE_GITHUB_APP_MENTION=t3-code-dev
# T3CODE_GITHUB_ALLOWED_REPOSITORIES=owner/repository,owner/another-repository
# T3CODE_GITHUB_MIN_PERMISSION=write
# T3CODE_GITHUB_TURN_TIMEOUT_MS=1800000

# Optional: hosted app origin used by the CLI's out-of-band OAuth flow.
# Defaults to https://app.t3.codes; override to test against a staging deployment.
# T3CODE_HOSTED_APP_URL=https://nightly.app.t3.codes
Expand All @@ -26,3 +37,13 @@
# T3CODE_MOBILE_OTLP_TRACES_URL=https://api.axiom.co/v1/traces
# T3CODE_MOBILE_OTLP_TRACES_DATASET=t3-code-mobile-traces-dev
# T3CODE_MOBILE_OTLP_TRACES_TOKEN=xaat-...

# Optional: sign and publish the mobile app from your own Expo and Apple teams.
# Development and preview builds append .dev and .preview to the bundle identifier.
# T3CODE_MOBILE_IOS_TEAM_ID=ABC1234567
# T3CODE_MOBILE_IOS_BUNDLE_IDENTIFIER=com.example.t3code
# Set to 1 only for free Xcode Personal Team builds. This disables paid-only
# widgets, push capabilities, App Groups, associated domains, and EAS updates.
# T3CODE_MOBILE_IOS_PERSONAL_TEAM=1
# T3CODE_MOBILE_EAS_PROJECT_ID=00000000-0000-0000-0000-000000000000
# T3CODE_MOBILE_EXPO_OWNER=your-expo-username
35 changes: 0 additions & 35 deletions .github/VOUCHED.td

This file was deleted.

40 changes: 40 additions & 0 deletions .github/client-overlay-ownership.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"overlays": [
{
"id": "desktop-links",
"branch": "t3-discord/f7d37879-desktop-deeplinks",
"pullRequest": 10,
"paths": [
"apps/desktop/src/app/DesktopApp.ts",
"apps/desktop/src/app/DesktopClerk.test.ts",
"apps/desktop/src/app/DesktopClerk.ts",
"apps/desktop/src/app/DesktopDeepLinks.test.ts",
"apps/desktop/src/app/DesktopDeepLinks.ts",
"apps/desktop/src/backend/DesktopBackendPool.test.ts",
"apps/desktop/src/electron/ElectronProtocol.ts",
"apps/desktop/src/main.ts",
"apps/desktop/src/window/DesktopApplicationMenu.test.ts",
"apps/desktop/src/window/DesktopWindow.test.ts",
"apps/desktop/src/window/DesktopWindow.ts",
"scripts/build-desktop-artifact.ts"
]
},
{
"id": "discord",
"branch": "fork/discord",
"pullRequest": 80,
"paths": [
"apps/discord-bot/**",
"docs/integrations/discord-bot.md",
"docs/architecture/discord-browser-automation.md",
"docs/examples/project-aliases.yaml"
]
},
{
"id": "vscode",
"branch": "fork/vscode",
"pullRequest": 79,
"paths": ["apps/vscode/**", ".vscode/launch.json"]
}
]
}
208 changes: 208 additions & 0 deletions .github/pr-stack.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
{
"upstreamRemote": "upstream",
"upstreamBranch": "main",
"forkChangesBranch": "fork/changes",
"integrationBranch": "fork/integration",
"pullRequests": [
{
"number": 1,
"branch": "fork/tim"
},
{
"number": 27,
"branch": "fork/candidates"
},
{
"number": 2,
"branch": "fork/changes"
}
],
"integrationOverlays": [
{
"number": 173,
"branch": "t3-discord/f7d37879-desktop-deeplinks"
},
{
"number": 174,
"branch": "fork/discord"
},
{
"number": 175,
"branch": "fork/vscode"
},
{
"number": 203,
"branch": "fork/identity"
}
],
"conflictResolutions": [
{
"branch": "fork/changes",
"commit": "10de598e790218c772ada3d908bc7b1eb1e54f0e",
"path": "apps/mobile/src/lib/threadActivity.ts",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "*",
"path": "apps/mobile/src/lib/threadActivity.ts",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "*",
"path": "packages/contracts/src/settings.test.ts",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "ce3318775d74c566b4eef309c3f374e6d220891d",
"path": "packages/contracts/src/settings.test.ts",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "*",
"path": "apps/web/src/components/ChatMarkdown.tsx",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "1f8a2c58ae115df840d98d5854825123c502d54c",
"path": "apps/web/src/components/ChatMarkdown.tsx",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "*",
"path": "apps/mobile/src/features/home/HomeScreen.tsx",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "4d97aafb8e216dd27b6835b13ad20fca2884691e",
"path": "apps/mobile/src/features/home/HomeScreen.tsx",
"strategy": "theirs"
},
{
"branch": "fork/integration",
"commit": "*",
"path": "pnpm-lock.yaml",
"strategy": "theirs"
},
{
"branch": "fork/integration",
"commit": "286efa51172d3cbf46684c9923ca9d2b003d0967",
"path": "pnpm-lock.yaml",
"strategy": "theirs"
},
{
"branch": "fork/integration",
"commit": "*",
"path": "AGENTS.md",
"strategy": "ours"
},
{
"branch": "fork/integration",
"commit": "46c3697f207ea2de04c0a9ef72ca867d4d9f01da",
"path": "AGENTS.md",
"strategy": "ours"
},
{
"branch": "fork/integration",
"commit": "*",
"path": "docs/fork-stack.md",
"strategy": "ours"
},
{
"branch": "fork/changes",
"commit": "*",
"path": "AGENTS.md",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "206981716ef30b5fb58338e32653339ed958a7f7",
"path": "AGENTS.md",
"strategy": "theirs"
},
{
"branch": "fork/candidates",
"commit": "*",
"path": "apps/web/src/components/SidebarV2.tsx",
"strategy": "theirs"
},
{
"branch": "fork/candidates",
"commit": "0cf437e7681face0550d5f9620b58f7b6327e57f",
"path": "apps/web/src/components/SidebarV2.tsx",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "*",
"path": "package.json",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "d21149c3666035d6afd61fbc87b4e6ceac2314e8",
"path": "package.json",
"strategy": "theirs"
},
{
"branch": "fork/tim",
"commit": "*",
"path": "apps/web/src/localApi.test.ts",
"strategy": "theirs"
},
{
"branch": "fork/tim",
"commit": "*",
"path": "packages/contracts/src/ipc.ts",
"strategy": "theirs"
},
{
"branch": "fork/tim",
"commit": "*",
"path": "apps/server/src/server.ts",
"strategy": "theirs"
},
{
"branch": "fork/tim",
"commit": "*",
"path": "apps/server/src/provider/Layers/ProviderRegistry.test.ts",
"strategy": "theirs"
},
{
"branch": "fork/tim",
"commit": "*",
"path": "apps/server/src/ws.ts",
"strategy": "theirs"
},
{
"branch": "fork/tim",
"commit": "*",
"path": "packages/client-runtime/src/rpc/client.ts",
"strategy": "theirs"
},
{
"branch": "fork/candidates",
"commit": "*",
"path": "apps/server/src/vcs/VcsStatusBroadcaster.ts",
"strategy": "theirs"
},
{
"branch": "fork/candidates",
"commit": "*",
"path": "apps/web/src/components/ChatView.tsx",
"strategy": "theirs"
},
{
"branch": "fork/changes",
"commit": "*",
"path": ".github/workflows/ci.yml",
"strategy": "theirs"
}
]
}
18 changes: 18 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,30 @@ we may close it without merging it, or never review it.

<!-- Explain the problem being solved and why this approach is the right one. -->

## Downstream Fork Relationship

<!--
For downstream-fork work, name the base branch, affected areas, and whether this depends on another
open PR. Delete this section for upstream contributions.
-->

## External-Fork Provenance

<!--
For an external-fork import, list what was imported unchanged, adapted locally, intentionally
excluded, and the fully qualified source links. Delete this section for original work.
-->

## UI Changes

<!-- If this PR changes UI, include clear before/after screenshots.
If the change involves motion or interaction, include a short video.
Delete this section if not applicable. -->

## Verification

<!-- List focused tests and checks run for this change. -->

## Checklist

- [ ] This PR is small and focused
Expand Down
Loading
Loading