Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2990 commits
Select commit Hold shift + click to select a range
188491e
fix(server): wake paused Cursor replay runs on mismatch (#11535)
Sep 14, 2026
d8365e5
fix(server): load V2 replay fixtures through the platform path servic…
Sep 14, 2026
51e0dd0
fix(server): report missing interrupt-and-restart capability for forc…
Sep 14, 2026
870b05e
fix(server): preserve Cursor directory and lint search results (#11533)
Sep 14, 2026
ca50113
fix(server): roll back question attachment copies when respond prepar…
Sep 14, 2026
fc4ff48
fix(server): restart the live session on model changes after dead rec…
Sep 14, 2026
2929fd8
fix(server): replay launches with server-allocated thread IDs (#11508)
Sep 14, 2026
259f83f
fix(web): keep the active-run header with the prompt that started it …
Sep 15, 2026
dbc5bc2
refactor(web): centralize provider instance icons (#11829)
Sep 15, 2026
0720136
feat(web): add the thread action menu and inline rename to the chat h…
Sep 15, 2026
330098c
fix(web): keep the preview mini-player clear of the inline thread det…
Sep 15, 2026
3e86ce2
fix: reconcile main snooze controls with orchestration v2
Sep 15, 2026
1c5d4fc
fix(web): adapt registry icons to light and dark themes
Sep 15, 2026
ca6fd54
fix: reconcile main worktree setup and title changes with v2
Sep 15, 2026
0faaf32
fix(server): isolate V2 migrations from the V1 database
Sep 15, 2026
8c7f49a
fix(ci): verify V2 branch pushes and remove unused helper
Sep 15, 2026
3fe55fb
revert: restore existing CI push triggers
Sep 15, 2026
f7a764c
fix(web): retain server-side queuing on v2 after rebase
Sep 15, 2026
d5383cc
fix(test): account for optional encoded provider settings
Sep 15, 2026
521d4a7
fix(server): project legacy thread shells during import
Sep 15, 2026
dfbe139
fix(server): replay command events across persistence pages (#11499)
Sep 15, 2026
0eb1732
fix(orchestrator): report terminal runs after wait timeout (#11574)
Sep 15, 2026
321a9ec
fix(server): skip corrupt scheduled-task rows instead of stopping the…
Sep 15, 2026
4772961
fix(server): preserve due schedules across equivalent time formatting…
Sep 15, 2026
af18f99
test(server): replay denied Claude writes through V2 (#11597)
Sep 15, 2026
144ad58
fix(server): fork Codex threads at the native turn boundary (#11490)
Sep 15, 2026
df495a2
fix(server): align MCP delegation support with live provider adapter …
Sep 15, 2026
c63f32a
test(server): prove v1 to v2 cutover on a copied database and flag di…
Sep 15, 2026
0aaad86
fix(server): bound legacy thread projection requests (#10512)
Sep 15, 2026
06b1f01
fix: reconcile main thread updates and Git improvements with v2
Sep 15, 2026
5362ecf
fix(web): confine composer glass transition to input surface
Sep 15, 2026
bbe98de
fix(server): restore hub limits updates in V2 (#11963)
Sep 15, 2026
bf339a2
fix(mobile): reject preview builds from v1 source
Sep 15, 2026
e57ab42
fix(mobile): skip preview validation without release credentials
Sep 15, 2026
39c08e1
fix: stop retained background work after a turn settles
Sep 15, 2026
9c62d10
refactor: remove legacy token streaming
Sep 15, 2026
7146bdf
fix: format subagent task names across clients
Sep 15, 2026
a8efa59
fix: distinguish unsupported server connections
Sep 15, 2026
b796495
fix: reconcile main updates with V2 orchestration
Sep 15, 2026
aa0bd30
fix(server): preserve PR links across V2 discovery and import
Sep 16, 2026
b692efe
fix: reconcile main monograms and PR refresh with V2
Sep 16, 2026
5e43ef7
fix(web): reset thread scroll and ignore hydration as a new turn
Sep 16, 2026
62d8cb2
fix(web): invert follow-up behavior with Mod+Enter
Sep 16, 2026
d8826f8
fix(web): show linked pull requests in thread details
Sep 16, 2026
0617796
fix(web): restore main thread-switch scrolling without layout resets
Sep 16, 2026
6c0a8f2
fix: reconcile main setup transitions with V2 threads
Sep 16, 2026
d91788f
fix(mobile): keep cached thread list across relaunch
Sep 16, 2026
edcc594
perf(client): coalesce persistent cache writes during streaming (#12109)
Sep 16, 2026
898041f
perf(server): suppress unchanged shell enrichment refreshes (#12110)
Sep 16, 2026
f5a10c3
perf(mobile): skip unchanged thread row renders (#12116)
Sep 16, 2026
af1c6d3
perf(mobile): yield to UI during shell cache encoding (#12117)
Sep 16, 2026
33cb0ca
perf(client): narrow mobile and web environment subscriptions (#12126)
Sep 16, 2026
909b774
perf(mobile): ignore irrelevant config updates in thread lists (#12127)
Sep 16, 2026
a5a2add
perf(mobile): limit thread model options to its provider (#12128)
Sep 16, 2026
4b2ce7c
perf(client): stop scanning threads for unused shell timestamps (#12129)
Sep 16, 2026
01925f5
feat(mobile): make the composer pill the hub for the running turn
Sep 16, 2026
b9f0156
fix: reconcile main composer and provider updates with V2
Sep 16, 2026
8cfc5d5
test(server): restore Cursor usage coverage after V2 rebase
Sep 16, 2026
2a3d0b9
feat(web): add compact PR checks to the workspace card (#11981)
Sep 16, 2026
654cd9b
feat(web): show subagent details and history in workspace card (#12079)
Sep 16, 2026
fe7de36
fix(server): start V2 provider turn when checkpoint baseline capture …
Sep 17, 2026
2cdd75b
fix(server): retain durable checkpoint index fixes on v2
Sep 17, 2026
4a8d454
fix(server): finalize v2 runs when checkpoint ref lookup fails
Sep 17, 2026
c2e0643
fix(server): reject v2 file restore in shared workspaces
Sep 17, 2026
02cf0c6
fix(mobile): allow changing provider in a started thread (#12184)
Sep 17, 2026
ced7b1c
fix: reconcile main updates with V2 runtimes and timelines
Sep 17, 2026
25c2699
fix: align V2 question and checkpoint timelines across clients
Sep 17, 2026
552b563
fix(mobile): guard question controls during answer submission
Sep 17, 2026
fd0f2b6
fix: adapt multi-model thread creation to V2 launches
Sep 17, 2026
2d52e1b
fix: restore V2 worktree setup transitions across clients
Sep 17, 2026
a74aadf
fix(mobile): match web provider handoff dividers
Sep 17, 2026
f37fcbd
fix(mobile): preview queued message order during drag (#12232)
Sep 17, 2026
a9be4d9
fix: preserve linked PRs and show them in badge tooltips (#12262)
Sep 17, 2026
660ada1
fix(orchestrator): defer queued provider handoff until delivery (#12226)
Sep 17, 2026
5c0ed7c
fix(v2): preserve running turns during provider handoff (#12255)
Sep 17, 2026
d0df504
feat(composer): attach threads as context (#12296)
Sep 17, 2026
54fc07d
fix: reconcile main updates and preserve V2 preview upgrades
Sep 17, 2026
06b871b
fix(codex): retain V2 reasoning streams and completed traces
Sep 17, 2026
ca27502
fix(timeline): align V2 reasoning disclosures with main
Sep 17, 2026
3a47a2d
fix(providers): enable Codex and Claude reasoning summaries in V2
Sep 17, 2026
2eb8a15
fix(timeline): preview live reasoning and buffer complete paragraphs
Sep 17, 2026
aecf45d
fix(timeline): unify worklog layout and subagent presentation
Sep 17, 2026
c56a1b0
fix(claude): retain requested subagent models
Sep 17, 2026
0579269
fix(mobile): map V2 icons on Android
Sep 17, 2026
a9cf449
test(server): align replay requests with reasoning settings
Sep 17, 2026
486e956
fix(web): retain PR panel context after V2 rebase
Sep 17, 2026
97310cf
test(timeline): cover current worklog interactions and fix CI
Sep 17, 2026
ecb22fb
test(server): refresh reasoning expectations across replay fixtures
Sep 17, 2026
8cfb5fc
fix(web): hide idle PR check counts and match row typography (#12321)
Sep 17, 2026
997d7cf
fix(web): open linked PRs from the badge hover list (#12314)
Sep 17, 2026
84569be
fix(web): configure alternate send and background shortcuts (#12174)
Sep 18, 2026
08fa54e
fix(web): preserve main actions when rebasing v2
Sep 18, 2026
e5da13b
fix(server): hand off failed and interrupted turn context
Sep 18, 2026
1ad7275
fix(queue): preserve and hold queued messages after restart
Sep 18, 2026
028c2c9
refactor(mcp): use workspace-aware thread launches
Sep 18, 2026
3727229
fix(server): keep tool payloads out of completion queues (#12345)
Sep 18, 2026
7393f52
refactor(web): reuse worklog rows for setup and created threads (#12347)
Sep 18, 2026
a18cb99
refactor(web): centralize thread details section layout (#12348)
Sep 18, 2026
8f1b0d2
refactor(mobile): share settings choice row defaults (#12349)
Sep 18, 2026
f2a1364
refactor(web): share composer context labels (#12357)
Sep 18, 2026
c98fbae
refactor(web): reuse shared error alerts (#12361)
Sep 18, 2026
1c3a524
refactor(mobile): share subagent status indicators (#12367)
Sep 18, 2026
0208814
t3code/ui composition audit/worklog link variant (#12375)
Sep 18, 2026
73d389a
feat(mobile): manage scheduled tasks across environments (#12351)
Sep 18, 2026
505ff05
refactor(ui): preserve shared controls across the V2 rebase
Sep 18, 2026
82d8b43
fix(v2): adapt to Effect rc.115 after rebase
Sep 18, 2026
db94be8
chore(v2): reconcile dependency lockfile after rebase
Sep 18, 2026
241bf77
fix(web): share chat width and remove stale styling
Sep 18, 2026
c7e8076
chore(marketing): remove unused duplicate screenshot
Sep 18, 2026
f8e7a5c
test(server): restore V2 transfer budgets and CI reporting
Sep 18, 2026
3ea25c2
fix(server): preserve reviewed secret rollback behavior on V2
Sep 18, 2026
15f8542
fix(web): reconcile sidebar search with V2 environment subscriptions
Sep 18, 2026
7e6db1f
fix(server): reconcile PR preview and checks fixtures
Sep 18, 2026
636a70a
fix(mobile): preserve merge-back action in shared thread header
Sep 18, 2026
d7400e0
fix(server): unblock orchestrator CI checks
Sep 18, 2026
5466e31
fix(web): anchor turn duration below the initiating prompt
Sep 18, 2026
c41f93a
fix(mobile): submit v2 previews to Play closed testing
Sep 18, 2026
e748743
fix(mobile): remove stale preferences type import
Sep 18, 2026
564faf5
fix(desktop): allow V1 and V2 to run concurrently (#12480)
Sep 18, 2026
96ff30b
fix(antigravity): accept supported legacy handshake versions (#12509)
Sep 18, 2026
b7cb3d5
fix(cursor): preserve SDK runtime chunks and helpers in packages (#12…
Sep 18, 2026
718c63d
feat(server): preserve budgeted history across provider handoffs (#12…
Sep 18, 2026
368884c
fix(server): decode v1 message events persisted with a reasoning role…
Sep 18, 2026
88a4784
test(server): align V2 fixtures with OTLP log configuration
Sep 18, 2026
ceeb506
fix(acp): reconcile elicitation validation with V2 protocol compatibi…
Sep 19, 2026
ec4e00f
fix(server): release thread history after provider turn startup
Sep 19, 2026
3d458db
fix(server): avoid full transcript reads in provider run guards
Sep 19, 2026
8c2aea4
fix(server): release delivered snapshots from live RPC streams
Sep 19, 2026
612927b
fix(shared): release successful results from completed trace spans
Sep 19, 2026
1710595
fix(v2): reconcile main cleanup and mobile device controls
Sep 19, 2026
ed322cb
fix(server): decode transcript tool payloads only once
Sep 19, 2026
79fb689
fix(server): refresh completed runs without loading transcripts
Sep 19, 2026
0982aae
fix(server): avoid transcript reloads during run completion
Sep 19, 2026
5c3921b
fix(server): load targeted state when starting provider turns
Sep 20, 2026
5879be6
fix(notifications): silence subagent threads
Sep 19, 2026
334655f
fix(preview): restore v2 sizing and project access (#12548)
Sep 19, 2026
bcef17d
fix(server): settle V2 threads after linked PR merges (#12568)
Sep 19, 2026
04f0fda
fix(web): show subagent models and running count in Lineage (#12491)
Sep 19, 2026
cc6a351
fix(web): show Auto balance in the workspace host menu (#12481)
Sep 19, 2026
dc8c228
fix(chat): present and summarize all T3 tools (#12671)
Sep 20, 2026
c390539
feat(web): list linked PRs in workspace card (#12574)
Sep 20, 2026
0b1ee28
fix(web): make PR badge hover lists easy to click (#12378)
Sep 20, 2026
9b0d644
fix(mobile): preserve native send choices and keyboard (#12770)
Sep 20, 2026
45c7e75
fix(server): surface actionable provider failure messages (#12560)
Sep 20, 2026
3edc5d5
fix(web): keep workspace card action hover uniform (#12766)
Sep 20, 2026
05abce1
fix(web): stop citation popovers flying into position
Sep 21, 2026
d612487
fix(web): hide raw image markup in queue previews (#12820)
Sep 21, 2026
6c56ad6
feat(v2): show provider limit stops as Limited (#12677)
Sep 21, 2026
6d074cd
feat(v2): resume limited threads when usage resets (#12686)
Sep 21, 2026
4728886
feat(v2): snooze limited threads until usage resets (#12687)
Sep 21, 2026
b7a147d
fix(v2): keep failed turns visible in the transcript (#12783)
Sep 21, 2026
e459214
refactor(server): share scheduling for tasks and limit recovery (#12795)
Sep 21, 2026
894f6c4
fix(v2): reconcile main UI, attachment limits, and logging fixtures
Sep 21, 2026
98b03d9
test(v2): align handoff fixtures with larger attachment limits
Sep 21, 2026
7b13cd9
feat(web): color handoff model names with their provider brand color …
Sep 21, 2026
5d4423b
refactor(web): remove the agents right panel (#12835)
Sep 21, 2026
b4544f9
feat(web): clearer icons for the workspace panel controls (#12838)
Sep 21, 2026
e3bdfd7
feat(web): give lineage subagent hovers the thread hover card (#12842)
Sep 21, 2026
ccf43cc
fix(v2): reconcile main composer layout and undo actions
Sep 21, 2026
3409430
fix(v2): remove obsolete composer breakpoint animation
Sep 21, 2026
534b7d4
fix(server): avoid transcript reads when checking run interrupts
Sep 21, 2026
28051c4
fix(server): replace unnecessary full projection reads
Sep 21, 2026
7a4a03c
perf(pr): reduce quota use when refreshing workspace checks (#12442)
Sep 21, 2026
1b8dd36
test(v2): expose scoped reads in provider replay harness
Sep 21, 2026
d37d9b4
fix(server): recover Pi resumes without reusing native history (#12933)
Sep 21, 2026
9efeb18
fix(settings): restore V2 controls and shared settings layout
Sep 21, 2026
35b9f0c
feat(web): edit the last queued message with Option+Up (#12599)
Sep 21, 2026
8383410
fix(web): edit automations from thread details (#12408)
Sep 21, 2026
943ab9a
fix(server): preserve provider history across repeated rollbacks (#12…
Sep 21, 2026
474124a
fix(server): start ACP MCP bridge in self-contained runtime (#12747)
Sep 21, 2026
6f3cb06
fix(server): launch contained ACP providers from packaged runtimes (#…
Sep 21, 2026
2f534ff
fix(web): restore sidebar order during thread context drags
Sep 21, 2026
3d564a5
refactor(server): resolve self invocations through one shared helper …
Sep 21, 2026
7a0c47f
perf(server): stop decoding unrelated events during startup (#12846)
Sep 21, 2026
630cf22
perf(server): stop maintaining redundant projection indexes (#12847)
Sep 21, 2026
47d533e
feat(cursor): support browser login for the agent SDK (#12948)
Sep 21, 2026
bcbe95e
fix(server): fail V2 runs when provider sessions cannot open (#12790)
Sep 21, 2026
1421612
fix(server): fail runs when provider startup preparation fails (#12409)
Sep 21, 2026
324038f
fix(server): select an available provider for delegated tasks (#11870)
Sep 21, 2026
45e2485
feat(web): show a turn's subagents as one collapsible card (#12839)
Sep 21, 2026
4ccfdee
feat(mobile): show subagents in a collapsible card (#12961)
Sep 22, 2026
c267ec1
fix(chat): link agent attribution to its source thread (#12971)
Sep 22, 2026
77acaf5
fix(orchestration): settle subagent statuses and activation timers (#…
Sep 22, 2026
52db643
fix(server): retry provider session opens before failing the run (#13…
Sep 22, 2026
b8aadbf
feat(auth): share provider sign-in flows across clients (#12965)
Sep 22, 2026
33817c1
refactor(cursor): use shared provider account setup and storage (#12966)
Sep 22, 2026
acebb3f
feat(acp): connect registry providers to shared sign-in flows (#12967)
Sep 22, 2026
19c1428
fix(v2): reconcile main settings, auth, and shared controls
Sep 23, 2026
ebf8a82
fix(v2): preserve main scroll fixes and mobile module boundaries
Sep 23, 2026
81f2d75
fix(v2): hidden automatic queued runs no longer block settling a thread
Sep 23, 2026
00056fd
fix(v2): reconcile main mobile lists and provider compatibility
Sep 23, 2026
486a270
fix(v2): reconcile main shared controls and render recovery
Sep 23, 2026
1688f02
fix(v2): remove stale panel styling exports
Sep 23, 2026
f4b0b5b
feat(web): integrate responsive chat and thread details
Sep 23, 2026
b245b09
feat(v2): make worktree branch naming configurable (#13294)
Sep 23, 2026
15cc654
fix(cua): show call titles and align app icons (#13307)
Sep 23, 2026
3c82794
fix(server): reduce retained thread memory in PR lookups and turn sta…
Sep 23, 2026
c851f8c
refactor(server): detach PR lookup stacks instead of a custom cache (…
Sep 23, 2026
33868db
fix(mobile): lift working control above question overlay (#13297)
Sep 23, 2026
a1a7de2
perf(server): speed up cold desktop launches (#13320)
Sep 23, 2026
6f3040d
fix(web): handle thread details context clicks (#13323)
Sep 24, 2026
a28fc10
fix(desktop): resolve Windows userData without yielding before the Cl…
Sep 24, 2026
68cd258
fix(v2): reconcile latest main after rebase
Sep 24, 2026
6dbe344
fix(v2): keep relay helpers private after rebase
Sep 24, 2026
3b89388
fix(v2): cover Pi compatibility after main sync
Sep 24, 2026
1c339ef
fix(orchestration): report subagent models and use live model choices…
Sep 24, 2026
cadac54
fix(server): keep Claude subagent output in the subagent's thread (#1…
Sep 24, 2026
833d52e
fix(web): align workspace card controls
Sep 24, 2026
2b6f2af
fix(server): link agent-sent messages to their source thread
Sep 24, 2026
d10bebc
test(server): remove skipped, duplicate, and constant-restating V2 te…
Sep 24, 2026
2e01848
fix(server): Codex V2 runs skills typed with any currency sigil (#13461)
Sep 24, 2026
4784fba
refactor(server): remove the unused V1 Codex session runtime (#13462)
Sep 24, 2026
7bc65c0
fix(server): Codex V2 sessions use the configured launch arguments (#…
Sep 24, 2026
f6924fd
fix(server): merged PRs update and auto-settle threads again (#13476)
Sep 24, 2026
430dfd1
fix(server): Codex V2 sessions expand ~ in the binary path (#13470)
Sep 24, 2026
d861582
fix(server): Claude V2 sessions expand ~ in the binary path (#13471)
Sep 24, 2026
e7b2407
chore(server): unexport OpenCode capabilities left unused by test rem…
Sep 24, 2026
3eb213c
test(server): make the provider-switch resume-failure test reach the …
Sep 24, 2026
a967baf
fix(v2): reconcile latest main protocol and theme updates
Sep 24, 2026
c9ad902
chore(web): drop the right panel sheet class left unused by the V2 re…
Sep 24, 2026
13aec8a
fix(server): Cursor V2 threads load project skills and rules (#13499)
Sep 24, 2026
a99b46e
test(server): re-record Cursor replay fixtures and cover skills live …
Sep 24, 2026
b0abc48
fix(codex): replay legacy user-input requests as blocking (#13509)
Sep 24, 2026
a63d9c5
test(server): record the Codex thread rollback fixture live on 0.156.…
Sep 24, 2026
d4af1c4
test(server): record Codex multi-agent V2 subagents live on 0.156.1 (…
Sep 24, 2026
f720d27
fix(v2): reconcile main auto-settle controls and preview migrations
Sep 24, 2026
e692dbb
fix(web): ungroup single subagents and stabilize group expansion
Sep 25, 2026
3413d33
fix(codex): preserve native item start times (#13525)
Sep 25, 2026
899a93a
test(server): replace Pi adapter unit tests with live replay fixtures…
Sep 25, 2026
06e80a6
test(server): remove replay harness self-tests (#13531)
Sep 25, 2026
85aaa11
test(server): record Claude background task and subagent lifecycles l…
Sep 25, 2026
75c7e9e
test(server): record Codex replay fixtures on gpt-6-luna and Codex 0.…
Sep 25, 2026
cb879a9
fix(server): keep a Claude wake reply off the user's queued message (…
Sep 25, 2026
37da532
fix(web): align workspace controls and restore split hover states
Sep 25, 2026
3cb31a1
fix(server): Cursor sandboxed threads find their helper when running …
Sep 25, 2026
c361921
chore(web): keep the thread details split surface class module-privat…
Sep 25, 2026
20c5739
fix(server): Codex V2 threads show todo lists again (#13546)
Sep 25, 2026
3d23e15
fix(web): resize floating previews smoothly above the composer
Sep 25, 2026
7381ed9
refactor(server): record Cursor replay fixtures with Effect (#13556)
Sep 25, 2026
cb8dce4
test(server): record Grok replay fixtures from a live grok agent (#13…
Sep 25, 2026
bf1e8c5
fix: reconcile latest main changes with V2
Sep 25, 2026
175e2bd
fix(server): Grok monitor updates stay running until Grok says they f…
Sep 25, 2026
81744b3
test(server): assert the read-only on-request write by its permission…
Sep 25, 2026
87c67bd
test(clients): retain main relay compatibility regression coverage
Sep 25, 2026
f8b8634
fix(server): ACP agents can read files under on-request approval (#13…
Sep 25, 2026
1f2f91d
fix(server): show diffs for ACP edits that send oldText/newText (#13579)
Sep 25, 2026
9e8083f
feat(web): stop active subagents from Lineage
Sep 25, 2026
c1ca2ec
fix(server): retain subagent stop projection errors
Sep 25, 2026
a5c8295
fix(v2): keep subagent stop requests from restoring stale state
Sep 25, 2026
5c5d73f
fix(v2): leave validation errors without exception causes
Sep 25, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
21 changes: 0 additions & 21 deletions .agents/skills/ios-debugger-agent/LICENSE

This file was deleted.

64 changes: 0 additions & 64 deletions .agents/skills/ios-debugger-agent/SKILL.md

This file was deleted.

9 changes: 0 additions & 9 deletions .agents/skills/ios-debugger-agent/agents/openai.yaml

This file was deleted.

21 changes: 0 additions & 21 deletions .agents/skills/ios-simulator-browser/LICENSE

This file was deleted.

51 changes: 0 additions & 51 deletions .agents/skills/ios-simulator-browser/SKILL.md

This file was deleted.

4 changes: 0 additions & 4 deletions .agents/skills/ios-simulator-browser/agents/openai.yaml

This file was deleted.

104 changes: 28 additions & 76 deletions .agents/skills/test-t3-app/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,89 +1,41 @@
---
name: test-t3-app
description: Launch, retain, and test the T3 Code web app in isolated development environments, including first-try browser authentication with one-time pairing URLs, pairing-token recovery, worktree-safe state directories, cross-turn dev server lifecycle, and direct SQLite inspection or fixture seeding. Use when an agent needs to run T3 locally, iteratively test UI behavior with a human, recover from an expired or consumed pairing token, isolate dev state, or prepare test data in state.sqlite.
description: Test T3 Code's web and desktop UI through its built-in Browser panel against isolated development state. Use for browser verification, browser pairing recovery, and test fixtures. Use test-t3-mobile for native mobile verification.
---

# Test T3 App
# Test T3 web and desktop

Use this skill for the web client. For iOS Simulator, Android Emulator, or physical-device testing against an isolated T3 backend, use the sibling [`test-t3-mobile`](../test-t3-mobile/SKILL.md) skill.
Use T3's built-in Browser panel for verification. If its tools are absent or
the panel reports unavailable, explain the blocker and stop verification.
Do not install or switch to another automation system. For native mobile
testing, use [test-t3-mobile](../test-t3-mobile/SKILL.md).

## Start an isolated web environment
## Start the app

1. Run commands from the repository root.
2. Choose a base directory that belongs only to the current worktree or test:
- Use the repository's ignored `.t3` directory for reusable worktree-local state.
- Use `mktemp -d /tmp/t3code-test.XXXXXX` for disposable state and retain the printed absolute path.
3. Start the full web stack with `vp run dev --home-dir <base-dir>`.
4. Keep the terminal session alive and read the selected server port, web port, base directory, and pairing URL from its output.
Reuse this task's healthy dev server. Otherwise run `vp run dev` from the
repository root and retain its terminal session. Use the worktree's ignored
`.t3` state and read the actual ports and pairing URL from the dev-runner output.
Never run against `~/.t3/userdata` or set `VITE_HTTP_URL` or `VITE_WS_URL`.

Treat a base directory as disposable only when it was created or deliberately selected for the current test. Never delete or directly seed the shared `~/.t3` directory. Prefer starting with a new temporary base directory over clearing state of uncertain ownership.
Test with meaningful project and thread data. Read
[references/sqlite-fixtures.md](references/sqlite-fixtures.md) only when
inspecting or seeding SQLite. Stop the test server before direct fixture writes.

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.
## Use the Browser panel

## Preserve the environment while iterating
Call `preview_status`, then `preview_open` if the Browser panel is
closed. Navigate to the complete startup pairing URL once with
`preview_navigate`, then use `preview_snapshot` and T3's interaction tools.
If the token was consumed or expired, run `node apps/server/src/bin.ts pair`
for a fresh one. Keep using the same tab.

Treat the overall testing or implementation loop—not an assistant turn or one verification pass—as the environment lifecycle boundary.
## Verify and retain

- Keep the dev process, base directory, selected ports, authenticated browser tab, registered projects, and seeded fixtures alive while the user may inspect the result or request follow-up changes.
- Do not stop the server merely because one verification pass completed or because you are yielding a response to the user.
- Before starting another environment, check whether the existing process and browser tab still serve the task. Reuse them when healthy instead of discarding useful state.
- On a later turn, verify that the existing process is alive and reuse its printed ports and base directory. If it exited, restart with the same base directory; create a new pairing token only when the browser session is no longer valid.
- Tell the user when a test environment remains available, including its non-secret web URL when useful. Never include a pairing token.
Exercise the affected flow and capture the state that proves it works. Keep
the server, state, and panel available while the user inspects or iterates.
An assistant turn ending is not teardown. Stop only processes you started,
using retained terminal sessions or captured PIDs.

## Authenticate the browser on the first navigation

1. Wait for the server log that says authentication is required and includes a URL ending in `/pair#token=...`.
2. Use the controlled in-app browser or browser-automation surface available to the agent. Do not use a system-browser launch command during automated testing.
3. Open that complete URL exactly once as the controlled browser's first navigation. Preserve the fragment and token verbatim.
4. Wait for the pairing exchange and redirect to finish before navigating elsewhere.
5. Continue in the same browser context so its stored bearer session remains available.

Treat pairing URLs as secrets. Do not copy them into final responses, screenshots, committed files, or durable logs. A pairing token is short-lived and single-use; opening the URL in another browser or opening it twice can consume it.

## Recover a consumed or expired pairing token

Create another token against the same database and web URL as the running dev server:

```bash
T3CODE_PORT=<server-port> node apps/server/src/bin.ts auth pairing create \
--base-dir <base-dir> \
--dev-url <web-url> \
--base-url <web-url> \
--ttl 15m \
--label agent-ui-test
```

Use the `Pair URL` from this command once. Derive `<server-port>` and `<web-url>` from the current dev-runner output, including any automatically selected port offset. Setting `T3CODE_PORT` keeps the administrative CLI from probing for an unrelated free port.

Always pass `--dev-url` for a dev-runner environment so the generated pairing URL uses the current web origin. An explicit base directory stores runtime state in `<base-dir>/userdata`; the `<base-dir>/dev` fallback is only used by an implicit dev home. Use `auth pairing list` to inspect active token metadata; it intentionally cannot reveal token secrets.

## Inspect or seed SQLite state

Read [references/sqlite-fixtures.md](references/sqlite-fixtures.md) before changing the database.

- Use `node apps/server/scripts/t3-sqlite-state.ts query` for schema discovery and read-only checks.
- Stop the dev server before using `node apps/server/scripts/t3-sqlite-state.ts exec`, then restart it with the same base directory.
- Seed projection tables only for disposable UI fixtures. Use application commands and APIs when testing business behavior or projection correctness.
- Use the auth CLI, not direct `auth_*` table edits, for pairing and sessions.

The helper refuses to write to the shared `~/.t3` directory by default and creates a database backup before each mutation.

## Tear down only when the testing loop is finished

Tear down when the user explicitly asks, confirms the iteration is finished, or the overall task is genuinely complete with no pending human review. Do not infer completion from the end of an assistant turn.

When teardown is appropriate:

1. Stop the dev process with its terminal interrupt.
2. Preserve the isolated base directory when it contains useful reproduction evidence or state for a likely follow-up.
3. Otherwise remove only a path created for this test after resolving and verifying the exact target.

If completion is uncertain, keep the environment alive and mention that it is retained for further iteration. A fresh isolated base directory remains the safest reset when authentication, migrations, or fixture state becomes ambiguous.

## Troubleshoot predictably

- If the browser shows an unauthenticated pairing screen, issue a new token instead of retrying the consumed URL.
- If the pairing URL is no longer visible, create a replacement token with both `--dev-url` and `--base-url`.
- If the replacement token is rejected, verify that the CLI and server use the identical absolute base directory and web URL.
- If the UI shows unexpected data, verify that every command uses the identical explicit base directory before editing anything.
- If ports move because another instance is running, trust the current dev-runner output rather than assuming ports `13773` and `5733`.
When sharing is requested, start with `vp run dev --share` and give the user
a fresh complete pairing URL that you have not consumed. Keep other credentials
out of screenshots, commits, and replies.
4 changes: 2 additions & 2 deletions .agents/skills/test-t3-app/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
interface:
display_name: "T3 App Testing"
short_description: "Launch and retain isolated T3 test environments"
default_prompt: "Use $test-t3-app to launch an isolated T3 environment and iteratively test it in the browser while preserving state."
short_description: "Test web and desktop in T3's Browser panel"
default_prompt: "Use $test-t3-app to verify the affected web or desktop flow through T3's Browser panel."
Loading