Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
43984f2
feat(tim): import tim-smart/t3code#4
tim-smart Jul 26, 2026
c8f0bbf
feat(tim): import tim-smart/t3code#5
tim-smart Jul 26, 2026
83c6c44
feat(tim): import tim-smart/t3code#6
tim-smart Jul 26, 2026
f958a25
feat(tim): import tim-smart/t3code#7
tim-smart Jul 26, 2026
89fc0c2
feat(tim): import tim-smart/t3code#8
tim-smart Jul 26, 2026
acdd34c
feat(tim): import tim-smart/t3code#9
tim-smart Jul 26, 2026
ff78e3d
feat(tim): import tim-smart/t3code#10
tim-smart Jul 26, 2026
af96e1c
feat(tim): import tim-smart/t3code#11
tim-smart Jul 26, 2026
71b01fb
feat(tim): import tim-smart/t3code#12
tim-smart Jul 26, 2026
7e22fec
feat(tim): import tim-smart/t3code#13
tim-smart Jul 26, 2026
8a6b417
feat(tim): import tim-smart/t3code#14
tim-smart Jul 26, 2026
6b54a4c
feat(tim): import tim-smart/t3code#15
tim-smart Jul 26, 2026
1de57af
feat(tim): import tim-smart/t3code#16
tim-smart Jul 26, 2026
75e9626
feat(tim): import tim-smart/t3code#17
tim-smart Jul 26, 2026
65bcbfd
test(tim-compat): gate macOS bundle fixture to Darwin
patroza Jul 26, 2026
cfd656d
fix(tim-compat): avoid plutil for custom open-with apps
patroza Jul 26, 2026
3f7b0f8
fix(tim-compat): product-merge VCS #4727 with fork failureKind; green…
github-actions[bot] Jul 29, 2026
9608a8c
fix(tim): restore resource telemetry join + TRACE2 hook exits
github-actions[bot] Jul 29, 2026
b856cdf
chore: initialize upstream candidate registry
patroza Jul 25, 2026
23a474f
perf: import bounded web thread history (upstream #4018) (#29)
patroza Jul 25, 2026
dcd85cb
perf: import mobile pagination and bounded replay (upstream #3510) (#35)
patroza Jul 25, 2026
fddd76f
perf: import bounded long-lived state (upstream #4176) (#34)
patroza Jul 25, 2026
101d03b
feat(web): import answered question timeline (upstream #4506) (#44)
patroza Jul 25, 2026
bfa8a62
feat(orchestrator): import upstream follow-up queue (#4245) (#63)
patroza Jul 25, 2026
90f88d4
fix(client-runtime): re-read network status when the app resumes (ups…
patroza Jul 26, 2026
5b392e4
perf(server): compress and cache packaged web assets (upstream #4516)
patroza Jul 26, 2026
1995b37
perf(server): back off repeated checkpoint capture failures (upstream…
patroza Jul 26, 2026
aa0a1ed
fix(server): preserve manually renamed thread titles (upstream #4558)
patroza Jul 26, 2026
44e1b71
fix(web): avoid woke status overlap after snooze closes (upstream #4539)
patroza Jul 26, 2026
6abdc2a
fix(candidates): rejoin follow-up queue types after tim tip green
github-actions[bot] Jul 29, 2026
3a1beb2
fix(candidates): expect thread.unsnoozed on settled turn starts
github-actions[bot] Jul 29, 2026
395a27f
docs(fork): agent gates, stack policy, and operator docs
github-actions[bot] Jul 29, 2026
3b81ed1
chore(stack): durable stack manifests and overlay ownership
github-actions[bot] Jul 29, 2026
ac3d753
feat(fork-stack): stack sync, feature rebase, and overlay compose
github-actions[bot] Jul 29, 2026
17e194b
ci: fork CI, mobile EAS delivery, and deploy scope
github-actions[bot] Jul 29, 2026
195ce5b
feat(contracts): fork protocol and settings schema extensions
github-actions[bot] Jul 29, 2026
973dc4c
feat(shared): shared helpers and Hermes lint guards
github-actions[bot] Jul 29, 2026
94e29bc
feat(client-runtime): reconnect diagnostics, VCS actions, and list state
github-actions[bot] Jul 29, 2026
4eca6a1
feat(packages): ssh, tailscale, and effect-acp fork deltas
github-actions[bot] Jul 29, 2026
7e04016
feat(server): queue, recovery, VCS, Jira, and orchestration fork product
github-actions[bot] Jul 29, 2026
e35d83d
feat(web): sidebar lists, composer, timeline, and chrome fork product
github-actions[bot] Jul 29, 2026
c3e7938
feat(mobile): home modes, board, queue composer, and EAS identity
github-actions[bot] Jul 29, 2026
b4014d1
feat(desktop): fork desktop packaging and open-with deltas
github-actions[bot] Jul 29, 2026
539f506
chore(fork): workspace root, lockfile, and planning artifacts
github-actions[bot] Jul 29, 2026
e1110ca
feat(web): align Recent mode across Sidebar V1/V2 without VCS on sett…
patroza Jul 29, 2026
803eeeb
chore(stack): re-register open draft overlay PRs #173–#175
github-actions[bot] Jul 29, 2026
b978883
feat: persist thread grouping + blue draft dots (#176)
patroza Jul 29, 2026
d2cc7e3
chore(stack): durable Tim conflictResolutions for upstream #4/#5 paths
github-actions[bot] Jul 29, 2026
79565b5
chore(stack): conflictResolutions for fork/tim (attempt 1)
github-actions[bot] Jul 29, 2026
acec131
chore(stack): conflictResolutions for fork/tim (attempt 2)
github-actions[bot] Jul 29, 2026
977c6f5
chore(stack): conflictResolutions for fork/candidates (attempt 3)
github-actions[bot] Jul 29, 2026
5469794
chore(stack): conflictResolutions for fork/candidates (attempt 4)
github-actions[bot] Jul 29, 2026
f707fdc
chore(stack): conflictResolutions for fork/changes (attempt 1)
github-actions[bot] Jul 29, 2026
6155419
fix(server): stop list VCS sweeps from blocking websocket tickets (#178)
patroza Jul 29, 2026
8496a09
feat(server): 24h debug logs for all inbound webhooks (#177)
omegent-app[bot] Jul 29, 2026
647a514
fix(stack): restore main telemetry/product APIs after restack
github-actions[bot] Jul 29, 2026
87eb0ff
test(server): expect kimi in ProviderRegistry provider list
github-actions[bot] Jul 29, 2026
7a7a8aa
test(server): poll re-probe with live clock under TestClock
github-actions[bot] Jul 29, 2026
bdf15c0
fix(server): match Jira wiki accountId mentions via bot account id (#…
omegent-app[bot] Jul 29, 2026
3c20188
ci: compose fork/integration on changes and overlay landings
github-actions[bot] Jul 29, 2026
091c3f0
fix(changes): rejoin product after candidates rebase
github-actions[bot] Jul 29, 2026
5fb2502
fix(mobile): keep settled shelf under Threads v2 and classic Recent (…
patroza Jul 29, 2026
a2f1afa
docs(stack): ship path; keep restack workflow disabled (#179)
patroza Jul 29, 2026
eceabd4
fix(grok): keep Build in agent mode, Plan in plan mode (#187)
omegent-app[bot] Jul 29, 2026
187c4cc
fix(server): import ProviderInteractionMode in GrokAcpSupport (#189)
patroza Jul 29, 2026
de5690c
ci: auto-rebase overlays before compose (fast ship) (#190)
patroza Jul 30, 2026
a37cba6
feat(server): join-or-create threads for Jira + GitHub work items (#191)
omegent-app[bot] Jul 30, 2026
f3da864
ci: require Fork CI on overlay-base PRs and document local gate (#193)
patroza Jul 30, 2026
b590e9e
feat(server): map Jira project keys to T3 projects and ack reactions …
omegent-app[bot] Jul 30, 2026
7a4e05b
fix(server): post Jira bridge responses as threaded replies (#200)
omegent-app[bot] Jul 30, 2026
56aa881
fix(server): recreate missing worktree on bootstrap (#197)
patroza Jul 30, 2026
6816058
fix(mobile): restore composer queue API after restack conflict resolv…
patroza Jul 30, 2026
23d8549
chore(stack): register fork/identity integration overlay (#204)
omegent-app[bot] Jul 30, 2026
869cc88
fix(web): restore AI usage indicators + host resource gauges (#208)
omegent-app[bot] Jul 30, 2026
c932520
ci: run Fork CI for PRs targeting fork/identity overlay (#214)
patroza Jul 30, 2026
aafe9d9
fix(stack): repair post-restack CI breakage from product merges (#215)
patroza Jul 30, 2026
3803423
fix(server): repair skipped title migration (#217)
patroza Jul 30, 2026
4137c53
disk tmp
github-actions[bot] Jul 30, 2026
9caa8c5
fix(server): use single RPC authorization scope table at runtime (#220)
patroza Jul 30, 2026
5a6a8ab
fix(stack): stop whole-file theirs on apps/server/src/ws.ts for Tim
github-actions[bot] Jul 30, 2026
8ed94c2
fix(desktop): keep reused backend ownership external (#228)
patroza Jul 30, 2026
d834626
fix(web): restore thread-loading send guard (#229)
patroza Jul 30, 2026
a8e4e69
fix(stack): forbid blind product conflict resolution (#230)
patroza Jul 30, 2026
bb01fe8
fix(mobile): keep conversation feed visible (#232)
patroza Jul 30, 2026
bbb0180
fix(stack): canonicalize composed lockfile (#233)
patroza Jul 30, 2026
a35a257
revert(mobile): roll back thread feed layout changes (#234)
patroza Jul 30, 2026
43bb6d7
Revert "fix(mobile): stop long iOS threads from jumping while scrolli…
patroza Jul 30, 2026
5bc16d5
revert(mobile): restore pre-diagnosis scroll baseline (#236)
patroza Jul 30, 2026
d7346f5
feat(vscode): introduce the VS Code integration overlay
patroza Jul 26, 2026
df8042d
chore: regenerate pnpm-lock.yaml for fork/vscode
github-actions[bot] Jul 27, 2026
3cd5828
feat(vscode): add workspace prompt stash (#151)
patroza Jul 28, 2026
8f06fc8
chore(vscode): canonicalize overlay lockfile (#231)
patroza Jul 30, 2026
30d18a3
feat(vscode): pair with pairing URL
bulgadev 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"]
}
]
}
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