Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
2069817
feat: apply public fork changes
patroza Jul 24, 2026
9b29d14
ci: deploy mobile from approved integration source (#5)
patroza Jul 24, 2026
c0fece0
fix: preserve fork adaptations across Tim update (#6)
patroza Jul 24, 2026
5ee6fb7
ci: publish mobile OTA after integration CI
patroza Jul 24, 2026
6b835ac
ci: isolate macOS test and dispatch mobile OTA
patroza Jul 24, 2026
dcf5ec5
ci: target fork EAS project
patroza Jul 24, 2026
35f9f38
Fix immediate mobile image submits (#8)
patroza Jul 24, 2026
0970309
fix: drop duplicate Opus 4.8 ordering assertion after stack rebase
omegent-app[bot] Jul 24, 2026
0d07270
Allow protected upstream stack sync (#12)
patroza Jul 24, 2026
42db70c
Keep stack deploy key available for sync (#13)
patroza Jul 24, 2026
84a451a
Run CI only for fork integration (#14)
patroza Jul 24, 2026
2208316
Parallelize the serialized server test suite (#15)
patroza Jul 24, 2026
98d97af
Reuse server test modules safely (#16)
patroza Jul 25, 2026
f2d39ac
Skip deploys for non-runtime integration changes (#17)
patroza Jul 25, 2026
8067ccb
Reuse fetched integration base for deploy scope (#18)
patroza Jul 25, 2026
a1d1d9d
Fix single image attachments in new drafts (#19)
patroza Jul 25, 2026
8d4e965
Keep older dev clients usable without Expo sharing (#20)
patroza Jul 25, 2026
da1a186
Guard mobile code against unsupported Hermes methods (#21)
patroza Jul 25, 2026
bd94935
fix(web): preserve iOS image picker across composer layouts (#22)
patroza Jul 25, 2026
81fb2a1
fix(web): keep iOS picker mounted while composer collapses (#23)
patroza Jul 25, 2026
bc386dd
test(server): bound flaky Grok interruption signal (#24)
patroza Jul 25, 2026
f51f8fd
fix(web): keep mobile composer open for image picker (#25)
patroza Jul 25, 2026
e1e9ec0
fix(mobile): avoid LogBox for recovered highlighter fallback (#26)
patroza Jul 25, 2026
8158f0e
chore: add upstream candidate provenance layer (#28)
patroza Jul 25, 2026
ccd2db1
fix(stack): bootstrap inserted provenance layers (#32)
patroza Jul 25, 2026
a0ad1bc
fix(web): adapt private UI to memory candidates
patroza Jul 25, 2026
892f53c
Bound provider shutdown drains (#36)
patroza Jul 25, 2026
ed005c1
ci(mobile): publish development builds from integration (#37)
patroza Jul 25, 2026
93164cc
fix(mobile): configure App Store Connect submission (#38)
patroza Jul 25, 2026
75f4f5f
fix(mobile): pass production identity to EAS Build (#39)
patroza Jul 25, 2026
6d4dc93
fix(web): restore recent work queue (#40)
patroza Jul 25, 2026
da21bd5
refactor: isolate external session import feature (#42)
patroza Jul 25, 2026
66df6c7
ci(mobile): build labelled PR previews with the release profile (#43)
patroza Jul 25, 2026
f63c030
ci(mobile): deliver production automatically on every integration (#45)
patroza Jul 25, 2026
5eea56a
fix(web): reconcile fork timeline behavior with upstream questions (#46)
patroza Jul 25, 2026
fe32164
ci: stop stack PR workflow duplication (#47)
patroza Jul 25, 2026
a5fe950
fix(discord-bot): reliable Discord thread title sync (#48)
omegent-app[bot] Jul 25, 2026
c955fce
feat(fork-stack): auto-rebase open feature PRs and smart local pull (…
omegent-app[bot] Jul 25, 2026
ecf9069
fix: stop replayed bootstrap turns from re-running git worktree add (…
patroza Jul 25, 2026
bd37772
fix(fork-stack): transplant feature PRs via git cherry unique patches…
omegent-app[bot] Jul 25, 2026
c768397
refactor: fully isolate external session import (#53)
patroza Jul 25, 2026
f88368e
fix(fork-stack): omit undefined transplant limit (#54)
patroza Jul 25, 2026
14eb4b7
fix(fork-stack): recover feature commits via historical base tips (#55)
omegent-app[bot] Jul 25, 2026
6642f4b
feat(fork-stack): compose protected integration overlays (#56)
patroza Jul 25, 2026
4ad50ac
fix(fork-stack): allow node APIs in overlay composer (#57)
patroza Jul 25, 2026
14ae7c3
fix(fork-stack): rebase integration from actual base (#58)
patroza Jul 25, 2026
8f38aeb
test(server): bound flaky CI diagnostics (#60)
patroza Jul 25, 2026
55f7cd7
fix(fork-stack): lease base history ref updates (#61)
patroza Jul 25, 2026
dbb8053
test(server): detach Grok timeout observation (#62)
patroza Jul 25, 2026
83347cb
fix(mobile): hand connected follow-ups to the server queue (#64)
patroza Jul 25, 2026
09e26af
style(server): format queued thread event union (#65)
patroza Jul 25, 2026
1903266
fix(server): tolerate legacy missing snooze state (#66)
patroza Jul 25, 2026
d47660f
test(server): tolerate flaky Grok completion fallback (#69)
patroza Jul 26, 2026
62183e1
ci: deploy only changed client components (#71)
patroza Jul 26, 2026
4ac6822
feat: edit and recall queued messages (#73)
patroza Jul 26, 2026
acd9748
chore: route client changes through owned overlays (#75)
patroza Jul 26, 2026
f558bfb
chore: register Discord and VS Code integration overlays (#81)
patroza Jul 26, 2026
8952662
test: reuse transformed modules safely (#82)
patroza Jul 26, 2026
7c90fe8
chore(fork): keep repository policy out of Tim imports
patroza Jul 26, 2026
1109910
docs(fork): call public fork work downstream
patroza Jul 26, 2026
9b2fc3d
fix(mobile): composer chrome + faster thread open (#83)
patroza Jul 26, 2026
1ab9c53
feat(mobile): add toggleable Recent work section on home (#84)
patroza Jul 26, 2026
7408367
feat(mobile): port Tim Smart session board (#85)
patroza Jul 26, 2026
bd20eba
feat: Needs attention on mobile and web (replaces Recent) (#86)
patroza Jul 26, 2026
8137301
feat: replace Needs attention with Recent, Projects, and Board modes …
patroza Jul 26, 2026
cab97e3
fix(mobile): persist multi-select environment filter across restarts …
patroza Jul 26, 2026
33fdad0
fix(mobile): switch list modes with header icons, not a segment bar (…
patroza Jul 26, 2026
8f56e3f
feat(mobile): show queue above keyboard-sticky composer (#92)
patroza Jul 26, 2026
fc4ef22
fix: keep real turn finals below Worked-for fold after queue drain (#93)
patroza Jul 26, 2026
23f800a
fix(mobile): solid header for Board list mode so cards clear nav chro…
patroza Jul 26, 2026
cef992e
docs(fork): document branch ruleset hardening (#88)
patroza Jul 26, 2026
084a932
feat: project filter and hide-settled on Recent/Projects lists (#96)
patroza Jul 26, 2026
f256874
fix(stack): isolate feature rebase push failures so overlays still up…
patroza Jul 26, 2026
7adc902
fix(desktop): promote unpacked directory artifacts (#99)
patroza Jul 27, 2026
9082c6e
fix(server): do not rebind assistant turnId after queue drain (#101)
patroza Jul 27, 2026
c486981
fix(server): prioritize automatic restart recovery (#102)
patroza Jul 27, 2026
a49a76d
feat(server): Jira issue mentions/replies + work-item store (#107)
omegent-app[bot] Jul 27, 2026
7af26f6
fix(stack): rebase complete dependent PR trees (#105)
patroza Jul 27, 2026
8a913b0
fix(stack): align mobile work log with candidate (#109)
patroza Jul 27, 2026
77c4577
fix(stack): record deterministic rebase resolution (#110)
patroza Jul 27, 2026
6851d0c
fix(web): keep chronological turn final visible (#113)
patroza Jul 27, 2026
9fed08d
fix(stack): treat already-based overlays as rebase success (#116)
patroza Jul 27, 2026
8522198
fix(preview): resolve dev-server ports against the environment (#115)
patroza Jul 27, 2026
df91b59
fix(stack): refresh lockfile after rebase and document recovery (#119)
patroza Jul 27, 2026
27d20b7
feat(sidebar): combine Recent/Projects into Threads with grouping (#121)
patroza Jul 27, 2026
3d8e37f
fix(deps): bump dfx catalog to 1.0.15 for effect beta.102 (#122)
patroza Jul 27, 2026
ce8c82f
fix(client-runtime): silence globalDate diagnostics in recency groups…
patroza Jul 27, 2026
e8f1c8f
feat(sidebar): finer recency buckets and hide lone headers (#123)
patroza Jul 28, 2026
50f6145
fix(client-runtime): restore globalDate suppressions after #123; docu…
patroza Jul 28, 2026
9d65ca1
feat(web): add New thread control to classic sidebar header (#125)
patroza Jul 28, 2026
c6f3a25
fix(stack): durable conflictResolutions (*) + document required recor…
patroza Jul 28, 2026
c21f864
fix(stack): compose overlays with lockfile skip/defer + final regen (…
patroza Jul 28, 2026
31ccefa
fix(stack): seed compose node_modules via btrfs reflink + home workdi…
patroza Jul 28, 2026
29e92ad
feat(web): recency headers on Sidebar V2 settled tail (#129)
patroza Jul 28, 2026
9b90533
fix(stack): green scripts typecheck; make CI compose find pnpm via co…
patroza Jul 28, 2026
0824ca7
fix(web): prevent stale timeline row reappearance (#133)
patroza Jul 28, 2026
643efea
feat(web): denser project · server context on Sidebar V2 rows (#135)
patroza Jul 28, 2026
f364381
feat(web): compact View & filters menu on Sidebar V2 (#136)
patroza Jul 28, 2026
9314e54
fix(stack): record settings.test.ts conflict resolution for auto-reba…
patroza Jul 28, 2026
cac7b1b
feat(web): collapsible Settled shelf when hide settled on classic Rec…
patroza Jul 28, 2026
a70bddc
fix(server): Claude Agent SDK 0.3.220 types + test requestIds (#140)
patroza Jul 28, 2026
33609f4
docs(agents): mandatory pre-push gate and per-layer full CI green (#142)
patroza Jul 28, 2026
b56fc2c
docs(agents): strengthen pre-push gate and per-layer full CI stop-lin…
patroza Jul 28, 2026
eeb3c94
feat(web): date headers on classic Settled shelf (V2 parity) (#143)
patroza Jul 28, 2026
480dcff
fix(stack): record ChatMarkdown.tsx conflict resolution for auto-reba…
patroza Jul 28, 2026
0d939c8
fix(stack): record HomeScreen.tsx conflict resolution for auto-rebase…
patroza Jul 28, 2026
c93e6c1
fix(ui): shorten repository project labels (#150)
patroza Jul 28, 2026
61bc3cb
fix(stack): record fork/integration pnpm-lock.yaml conflict resolutio…
patroza Jul 28, 2026
fd4b292
fix(web): restore remote Open in VS Code header button (#154)
patroza Jul 28, 2026
a516eb6
test(web): existence contracts so stack recovery cannot drop fork UI …
patroza Jul 28, 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"]
}
]
}
96 changes: 96 additions & 0 deletions .github/pr-stack.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{
"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": 10,
"branch": "t3-discord/f7d37879-desktop-deeplinks"
},
{
"number": 80,
"branch": "fork/discord"
},
{
"number": 79,
"branch": "fork/vscode"
}
],
"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"
}
]
}
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
101 changes: 0 additions & 101 deletions .github/workflows/ci.yml

This file was deleted.

3 changes: 2 additions & 1 deletion .github/workflows/deploy-relay.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ concurrency:
jobs:
deploy_relay:
name: Deploy production relay
runs-on: blacksmith-8vcpu-ubuntu-2404
if: github.repository == 'pingdotgg/t3code'
runs-on: ubuntu-24.04
timeout-minutes: 15
environment:
name: production
Expand Down
Loading
Loading