Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
d0aa737
feat(tim): import tim-smart/t3code#4
tim-smart Jul 26, 2026
716f5a7
feat(tim): import tim-smart/t3code#5
tim-smart Jul 26, 2026
67bd997
feat(tim): import tim-smart/t3code#6
tim-smart Jul 26, 2026
6547807
feat(tim): import tim-smart/t3code#7
tim-smart Jul 26, 2026
980208d
feat(tim): import tim-smart/t3code#8
tim-smart Jul 26, 2026
586ce99
feat(tim): import tim-smart/t3code#9
tim-smart Jul 26, 2026
4a0591d
feat(tim): import tim-smart/t3code#10
tim-smart Jul 26, 2026
90b13fe
feat(tim): import tim-smart/t3code#11
tim-smart Jul 26, 2026
2c0ac04
feat(tim): import tim-smart/t3code#12
tim-smart Jul 26, 2026
a2467b6
feat(tim): import tim-smart/t3code#13
tim-smart Jul 26, 2026
dceca16
feat(tim): import tim-smart/t3code#14
tim-smart Jul 26, 2026
fcdc851
feat(tim): import tim-smart/t3code#15
tim-smart Jul 26, 2026
cdc0f2d
feat(tim): import tim-smart/t3code#16
tim-smart Jul 26, 2026
ca10def
feat(tim): import tim-smart/t3code#17
tim-smart Jul 26, 2026
830fbe3
test(tim-compat): gate macOS bundle fixture to Darwin
patroza Jul 26, 2026
5334ee9
fix(tim-compat): avoid plutil for custom open-with apps
patroza Jul 26, 2026
a495597
fix(tim-compat): product-merge VCS #4727 with fork failureKind; green…
github-actions[bot] Jul 29, 2026
7c87796
fix(tim): restore resource telemetry join + TRACE2 hook exits
github-actions[bot] Jul 29, 2026
5e3c13a
chore: initialize upstream candidate registry
patroza Jul 25, 2026
66a0e7e
perf: import bounded web thread history (upstream #4018) (#29)
patroza Jul 25, 2026
67bab34
perf: import mobile pagination and bounded replay (upstream #3510) (#35)
patroza Jul 25, 2026
640aec8
perf: import bounded long-lived state (upstream #4176) (#34)
patroza Jul 25, 2026
be1e1a8
feat(web): import answered question timeline (upstream #4506) (#44)
patroza Jul 25, 2026
6a98b1e
feat(orchestrator): import upstream follow-up queue (#4245) (#63)
patroza Jul 25, 2026
f628627
fix(client-runtime): re-read network status when the app resumes (ups…
patroza Jul 26, 2026
22a4ed7
perf(server): compress and cache packaged web assets (upstream #4516)
patroza Jul 26, 2026
efd34dd
perf(server): back off repeated checkpoint capture failures (upstream…
patroza Jul 26, 2026
9132136
fix(server): preserve manually renamed thread titles (upstream #4558)
patroza Jul 26, 2026
008d898
fix(web): avoid woke status overlap after snooze closes (upstream #4539)
patroza Jul 26, 2026
b1516d3
fix(candidates): rejoin follow-up queue types after tim tip green
github-actions[bot] Jul 29, 2026
bd15464
fix(candidates): expect thread.unsnoozed on settled turn starts
github-actions[bot] Jul 29, 2026
4df8aaa
docs(fork): agent gates, stack policy, and operator docs
github-actions[bot] Jul 29, 2026
b968507
chore(stack): durable stack manifests and overlay ownership
github-actions[bot] Jul 29, 2026
32c4625
feat(fork-stack): stack sync, feature rebase, and overlay compose
github-actions[bot] Jul 29, 2026
27c0da6
ci: fork CI, mobile EAS delivery, and deploy scope
github-actions[bot] Jul 29, 2026
cbceb7a
feat(contracts): fork protocol and settings schema extensions
github-actions[bot] Jul 29, 2026
c746ad9
feat(shared): shared helpers and Hermes lint guards
github-actions[bot] Jul 29, 2026
3895459
feat(client-runtime): reconnect diagnostics, VCS actions, and list state
github-actions[bot] Jul 29, 2026
04cd19d
feat(packages): ssh, tailscale, and effect-acp fork deltas
github-actions[bot] Jul 29, 2026
a437a16
feat(server): queue, recovery, VCS, Jira, and orchestration fork product
github-actions[bot] Jul 29, 2026
c9be823
feat(web): sidebar lists, composer, timeline, and chrome fork product
github-actions[bot] Jul 29, 2026
495676a
feat(mobile): home modes, board, queue composer, and EAS identity
github-actions[bot] Jul 29, 2026
bf4860f
feat(desktop): fork desktop packaging and open-with deltas
github-actions[bot] Jul 29, 2026
9207c14
chore(fork): workspace root, lockfile, and planning artifacts
github-actions[bot] Jul 29, 2026
f00543a
feat(web): align Recent mode across Sidebar V1/V2 without VCS on sett…
patroza Jul 29, 2026
c482ec1
chore(stack): re-register open draft overlay PRs #173–#175
github-actions[bot] Jul 29, 2026
8b3811f
feat: persist thread grouping + blue draft dots (#176)
patroza Jul 29, 2026
76c0017
chore(stack): durable Tim conflictResolutions for upstream #4/#5 paths
github-actions[bot] Jul 29, 2026
d66120b
chore(stack): conflictResolutions for fork/tim (attempt 1)
github-actions[bot] Jul 29, 2026
77fb7a0
chore(stack): conflictResolutions for fork/tim (attempt 2)
github-actions[bot] Jul 29, 2026
8153116
chore(stack): conflictResolutions for fork/candidates (attempt 3)
github-actions[bot] Jul 29, 2026
a325d44
chore(stack): conflictResolutions for fork/candidates (attempt 4)
github-actions[bot] Jul 29, 2026
65e3ebf
chore(stack): conflictResolutions for fork/changes (attempt 1)
github-actions[bot] Jul 29, 2026
75449fb
fix(server): stop list VCS sweeps from blocking websocket tickets (#178)
patroza Jul 29, 2026
aa38591
feat(server): 24h debug logs for all inbound webhooks (#177)
omegent-app[bot] Jul 29, 2026
420dd06
fix(stack): restore main telemetry/product APIs after restack
github-actions[bot] Jul 29, 2026
7702cf0
test(server): expect kimi in ProviderRegistry provider list
github-actions[bot] Jul 29, 2026
0c30ec9
test(server): poll re-probe with live clock under TestClock
github-actions[bot] Jul 29, 2026
46b88c5
fix(server): match Jira wiki accountId mentions via bot account id (#…
omegent-app[bot] Jul 29, 2026
2e43347
ci: compose fork/integration on changes and overlay landings
github-actions[bot] Jul 29, 2026
5daaaad
fix(changes): rejoin product after candidates rebase
github-actions[bot] Jul 29, 2026
68f5fe1
fix(mobile): keep settled shelf under Threads v2 and classic Recent (…
patroza Jul 29, 2026
5c5c762
docs(stack): ship path; keep restack workflow disabled (#179)
patroza Jul 29, 2026
b31d465
fix(grok): keep Build in agent mode, Plan in plan mode (#187)
omegent-app[bot] Jul 29, 2026
1a4b5c1
fix(server): import ProviderInteractionMode in GrokAcpSupport (#189)
patroza Jul 29, 2026
933bdc4
ci: auto-rebase overlays before compose (fast ship) (#190)
patroza Jul 30, 2026
2e1c145
feat(server): join-or-create threads for Jira + GitHub work items (#191)
omegent-app[bot] Jul 30, 2026
60b07e1
ci: require Fork CI on overlay-base PRs and document local gate (#193)
patroza Jul 30, 2026
abdaa91
feat(server): map Jira project keys to T3 projects and ack reactions …
omegent-app[bot] Jul 30, 2026
24974f3
fix(server): post Jira bridge responses as threaded replies (#200)
omegent-app[bot] Jul 30, 2026
6879f39
fix(server): recreate missing worktree on bootstrap (#197)
patroza Jul 30, 2026
2b4be4a
fix(mobile): restore composer queue API after restack conflict resolv…
patroza Jul 30, 2026
ff7f55f
chore(stack): register fork/identity integration overlay (#204)
omegent-app[bot] Jul 30, 2026
85b19b1
fix(web): restore AI usage indicators + host resource gauges (#208)
omegent-app[bot] Jul 30, 2026
63e17b4
ci: run Fork CI for PRs targeting fork/identity overlay (#214)
patroza Jul 30, 2026
c5d6f60
fix(stack): repair post-restack CI breakage from product merges (#215)
patroza Jul 30, 2026
bba06ae
fix(server): repair skipped title migration (#217)
patroza Jul 30, 2026
4fd9a68
disk tmp
github-actions[bot] Jul 30, 2026
9c759c1
fix(server): use single RPC authorization scope table at runtime (#220)
patroza Jul 30, 2026
5e798c0
fix(stack): stop whole-file theirs on apps/server/src/ws.ts for Tim
github-actions[bot] Jul 30, 2026
847d35e
fix(desktop): keep reused backend ownership external (#228)
patroza Jul 30, 2026
8b73ec8
fix(web): restore thread-loading send guard (#229)
patroza Jul 30, 2026
afaebba
fix(stack): forbid blind product conflict resolution (#230)
patroza Jul 30, 2026
0bab7a2
fix(mobile): keep conversation feed visible (#232)
patroza Jul 30, 2026
c8247ac
fix(stack): canonicalize composed lockfile (#233)
patroza Jul 30, 2026
aaf05d2
revert(mobile): roll back thread feed layout changes (#234)
patroza Jul 30, 2026
f8fb50a
Revert "fix(mobile): stop long iOS threads from jumping while scrolli…
patroza Jul 30, 2026
fdba2bd
revert(mobile): restore pre-diagnosis scroll baseline (#236)
patroza Jul 30, 2026
878f3fb
ci(release): support desktop artifact-only builds (#239)
patroza Jul 31, 2026
fa8df45
chore(stack): durable Tim conflictResolution for GitVcsDriverCore tests
github-actions[bot] Jul 31, 2026
2908a5c
chore(stack): drop forbidden whole-file Tim resolve for GitVcsDriverC…
github-actions[bot] Jul 31, 2026
993cb90
fix(stack): restore thread.context.compact contracts and server path
github-actions[bot] Jul 31, 2026
379a40f
feat(identity): session identity + source attribution (overlay) (#203)
omegent-app[bot] Jul 31, 2026
bfde6c0
docs(server): add provider turn recovery runbook
github-actions[bot] Jul 31, 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"]
}
]
}
88 changes: 88 additions & 0 deletions .github/pr-stack.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
{
"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/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/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
35 changes: 35 additions & 0 deletions .github/upstream-candidates.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"version": 1,
"candidates": [
{
"upstreamPr": 4018,
"sourceSha": "de8fd65934768173819b93adcd6b92af3e8c7fc3",
"status": "active",
"purpose": "Bound server thread history and lazily page older web activity"
},
{
"upstreamPr": 3510,
"sourceSha": "034f4936d7a1435887bb62ac3f2db61f08928cbf",
"status": "active",
"purpose": "Page mobile history and bound stale subscription catch-up"
},
{
"upstreamPr": 4176,
"sourceSha": "56b6615afdfe3804a466e33cbab9056b8981f217",
"status": "active",
"purpose": "Bound long-lived orchestration, browser, preview, and VCS in-memory state"
},
{
"upstreamPr": 4506,
"sourceSha": "f7eaa00b99e67a9c1caf09e2fe6ff1f536f66b91",
"status": "active",
"purpose": "Show answered provider questions in the web thread timeline"
},
{
"upstreamPr": 4245,
"sourceSha": "6be48eb238cf310a60cc9571240601e774c7d381",
"status": "active",
"purpose": "Queue follow-up messages server-side during active turns with explicit steer controls"
}
]
}
Loading
Loading