Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1271 commits
Select commit Hold shift + click to select a range
062b461
fix(shared): bound the file-link label so bracket runs stop rescannin…
tsouth89 Aug 9, 2026
659986c
fix(web): thread title button no longer eats the drag area (#5857)
nathangerday Aug 9, 2026
bd18d8d
fix(web): unify usage page chrome (#5823)
t3-code[bot] Aug 9, 2026
c8ad4b8
fix(shell): add ~/.local/bin to the Windows CLI resolver so native-in…
arhxam Aug 9, 2026
83d769f
fix(web): match settings search shortcut styling to command palette's…
UtkarshUsername Aug 9, 2026
f993fa1
fix(mobile): long-pressing a thread row no longer navigates into the …
juliusmarminge Aug 9, 2026
0d38866
fix(server): usage no longer double-counts forked Codex sessions (#5887)
t3dotgg Aug 9, 2026
2abe668
fix(server): sandbox user-provided SVGs (#5916)
t3dotgg Aug 9, 2026
9a1472d
fix(web): match usage titlebar text styling (#5897)
t3-code[bot] Aug 10, 2026
f21d5e4
Move project settings to contextual project routes (#5923)
juliusmarminge Aug 10, 2026
5da4533
Preserve back navigation when opening settings (#5930)
juliusmarminge Aug 10, 2026
73b2e8f
Automate production mobile EAS releases (#5609)
juliusmarminge Aug 10, 2026
9690680
Add settings and usage breadcrumbs (#5929)
juliusmarminge Aug 10, 2026
cbd55d6
fix(web): correct model picker trigger padding (#5935)
Chrono-byte Aug 10, 2026
0ca9fb3
fix(web): show worktree icon in sidebar v2 (#5909)
tris203 Aug 10, 2026
ef051bd
fix(web): enable restore defaults after theme mix changes (#5928)
Lucenx9 Aug 10, 2026
d432100
fix(web): trait menu closes after you pick a level (#5879)
t3dotgg Aug 10, 2026
f0e2975
fix(web): align project name with headline (#5864)
carterwsmith Aug 10, 2026
3d74474
fix(web): update pills use readable theme foregrounds (#5938)
chrisdeeming Aug 10, 2026
9821bca
fix(web): use themed confirmation dialogs (#5624)
StiensWout Aug 10, 2026
fbcae59
fix(web): use import/export-appropriate icons for theme buttons (#5964)
UtkarshUsername Aug 10, 2026
67ef189
fix(mobile): detect PowerShell cmdlet errors in work log rows (#5726)
myacoub91 Aug 10, 2026
d440442
fix(mobile): stop Android user bubbles with code blocks from overlapp…
Brechard Aug 10, 2026
3b72d17
fix(mobile): parse EAS fingerprint JSON (#5991)
juliusmarminge Aug 10, 2026
78f462c
chore(release): prepare v0.0.33
t3-code[bot] Aug 10, 2026
cad2c93
feat: multi-provider pull requests page with in-app reviews (#4849)
Bil0000 Aug 10, 2026
0b0ae80
Integrate Codex app-server support
juliusmarminge Apr 18, 2026
d770995
nit
juliusmarminge Apr 18, 2026
eca0684
revert more
juliusmarminge Apr 18, 2026
c9d5301
resynclock
juliusmarminge Apr 18, 2026
e4e8ad3
Delay Codex provider availability until checked
juliusmarminge Apr 18, 2026
6a3a6e4
Return Cursor ACP runtime with explicit scope
juliusmarminge Apr 18, 2026
4b70d92
Normalize Codex IDs and preserve streamed stdout decoding
juliusmarminge Apr 18, 2026
2509aaf
Scope Codex session runtime lifetimes
juliusmarminge Apr 18, 2026
04c4dd0
decoders
juliusmarminge Apr 18, 2026
1a78c11
Flush native logs on adapter shutdown
juliusmarminge Apr 18, 2026
e153393
Switch Codex provider checks to app-server probe
juliusmarminge Apr 18, 2026
74d1713
Address Codex review feedback
juliusmarminge Apr 18, 2026
9a16dbc
Fix Codex provider status test expectations
juliusmarminge Apr 18, 2026
ea38f86
Add orchestration v2 docs and probe fixtures
juliusmarminge Apr 20, 2026
bf150de
Add orchestration v2 replay and service contracts
juliusmarminge Apr 21, 2026
4e825f9
Map Codex turns into orchestration v2
juliusmarminge Apr 21, 2026
a5c0918
Implement orchestration v2 runtime
juliusmarminge Apr 24, 2026
d121c84
Add thread fork lineage and lazy context transfer
juliusmarminge Apr 29, 2026
ec38d99
Add orchestration V2 backend checklist
juliusmarminge Apr 29, 2026
3439d31
Add merge-back context handoff support
juliusmarminge May 2, 2026
c4a5cdf
Add V2 command capability policy
juliusmarminge May 4, 2026
ad1f6b2
Add Claude replay fixture recorder
juliusmarminge May 6, 2026
bfd7ce9
Extract Claude SDK query runner from provider adapter
juliusmarminge May 6, 2026
d26a750
Add model selection to orchestration runs
juliusmarminge May 6, 2026
3d10fc1
Map Claude replay fixtures to multi-turn turns
juliusmarminge May 7, 2026
097fc53
Map Claude turns to runtime query policies
juliusmarminge May 7, 2026
e7152fc
Support active Claude steering and turn replay mapping
juliusmarminge May 7, 2026
cdc2f4b
Add turn-interrupt replay coverage and protocol logging
juliusmarminge May 7, 2026
330fab0
Document Cursor SDK MCP projection for V2
juliusmarminge May 7, 2026
486e2d8
feat(orchestration-v2): wire claude adapter primitives
juliusmarminge May 27, 2026
4386c17
feat(orchestration-v2): support cross-provider handoff
juliusmarminge Jun 8, 2026
b08096d
fix(orchestration-v2): resolve cross-provider forks
juliusmarminge Jun 8, 2026
1c4ccb8
feat(orchestration-v2): add merge-back replay coverage
juliusmarminge Jun 9, 2026
389d7dd
fix(orchestration-v2): compose provider switch merge context
juliusmarminge Jun 9, 2026
fc62f11
fix(orchestration-v2): preserve source history on merged switch
juliusmarminge Jun 9, 2026
d37991d
Map orchestration v2 WS methods to auth scopes
juliusmarminge Jun 9, 2026
aefd548
feat(orchestration-v2): model native subagents
juliusmarminge Jun 9, 2026
853d3ef
wip
juliusmarminge Jun 14, 2026
93f4d99
refactor(orchestration-v2): adopt host process spawn policy
juliusmarminge Jun 14, 2026
0b38fca
Add orchestration MCP toolkit
juliusmarminge Jun 17, 2026
9b3a781
Add Cursor SDK orchestration replay support
juliusmarminge Jun 17, 2026
47f2b5a
Handle segmented Cursor turns and stable visible timelines
juliusmarminge Jun 18, 2026
a09c802
Add ACP replay harness and session lifecycle support
juliusmarminge Jun 19, 2026
cc9b8db
Add MCP thread management and Codex turn mapping
Jun 19, 2026
74029e0
Add Orchestration V2 application integration plan
Jun 20, 2026
a051ecc
Map orchestration turns to provider instances
Jun 20, 2026
88b0628
Share Codex sessions across orchestration threads
Jun 21, 2026
774d17f
Align orchestration V2 with Effect service conventions
Jun 21, 2026
f8b552c
Start orchestration V2 application services
Jun 21, 2026
8768c15
Complete orchestration V2 application services
Jun 21, 2026
1715e54
Require MCP registry for V2 provider sessions
Jun 21, 2026
e14288e
Remove MCP credential expiration
Jun 21, 2026
4913a39
Guarantee MCP revocation during session release
Jun 21, 2026
73e9a00
Integrate orchestration v2 with the application runtime
Jun 21, 2026
ad5ed3c
Split the V2 frontend plan into parity and enrichment phases
Jun 21, 2026
b8ec2fd
Complete orchestration V2 frontend cutover
Jun 22, 2026
345cab1
Integrate orchestration V2 controls and process recovery
Jun 22, 2026
ef01cb9
Handle preparing turns across provider orchestration
juliusmarminge Jun 23, 2026
404af3f
Record created threads and subagent progress
juliusmarminge Jun 23, 2026
64fb063
Map thread panel into title bar and sidebar
juliusmarminge Jun 24, 2026
d72c907
Reserve space for inline thread details panel
juliusmarminge Jun 25, 2026
6d110b3
Split open-in editor controls into panel and toolbar variants
juliusmarminge Jun 25, 2026
034f013
Hide subagent threads and simplify thread controls
juliusmarminge Jun 25, 2026
3f6358a
Render mobile timelines from V2 turn items
juliusmarminge Jun 25, 2026
0deab02
Enrich mobile V2 execution items
juliusmarminge Jun 25, 2026
5ecb78a
Expose V2 thread workflows on mobile
juliusmarminge Jun 25, 2026
efa2bfe
Retire V1 client orchestration parity
juliusmarminge Jun 25, 2026
bdbae0d
Add iOS associated domains for Clerk
juliusmarminge Jun 25, 2026
a8e35ff
Map Grok task envelopes to subagent lineage
juliusmarminge Jun 26, 2026
a531814
Adopt userdata-v2 and subagent activity mapping
juliusmarminge Jun 29, 2026
bd83917
Map nested Codex subagent threads correctly
juliusmarminge Jun 29, 2026
91897f7
Clarify thread relationship icons and ordering
juliusmarminge Jun 29, 2026
c6c8eec
Keep persistent cards visible in folded turns
juliusmarminge Jun 29, 2026
d480f42
Require Cursor API key for provider checks
juliusmarminge Jun 29, 2026
081e8fb
fix(web): align thread details panel controls and menus (#3606)
maria-rcks Jun 30, 2026
e686e09
Switch Cursor provider to the official SDK
juliusmarminge Jun 30, 2026
b02390f
Remove early access badges from Cursor and Grok
juliusmarminge Jun 30, 2026
d2078a2
Allow provider switching via handoff in chat threads
juliusmarminge Jul 1, 2026
84ca291
Fix Claude task turn mapping
juliusmarminge Jul 1, 2026
a0890aa
feat: scheduled tasks (automations) (#3638)
juliusmarminge Jul 1, 2026
eb08eb6
feat(orchestrator): Add shared provider continuation and background i…
mwolson Jul 9, 2026
9194ef3
[orchestrator-v2] fix(orchestrator): Restore Claude session continuit…
mwolson Jul 12, 2026
e731bb2
[orchestrator-v2] fix(orchestrator): Codex background command complet…
mwolson Jul 12, 2026
2236e45
fix(orchestrator): scope Claude MCP tool pre-approval (#3862)
PixPMusic Jul 20, 2026
d1bdf78
feat(orchestrator): pass model options through MCP thread targets (#3…
PixPMusic Jul 20, 2026
561fb9e
fix(orchestrator): align Claude permission replay with SDK
juliusmarminge Jul 20, 2026
fda1773
fix(ci): restore Claude permission request identity
juliusmarminge Jul 20, 2026
5bee234
test(desktop): expect orchestrator v2 state directory
juliusmarminge Jul 20, 2026
43e032d
fix(claude): redact launch arguments from protocol logs
juliusmarminge Jul 20, 2026
6a14c66
fix(claude): preserve approvals with full-access sandbox
juliusmarminge Jul 20, 2026
8a48db4
fix(claude): allow questions during plan mode
juliusmarminge Jul 20, 2026
c2a890a
fix(claude): honor never-approval runtime policies
juliusmarminge Jul 20, 2026
fffc7c1
fix(claude): enforce read-only tool availability
juliusmarminge Jul 20, 2026
02e8a89
fix(claude): reopen queries after MCP credential rotation
juliusmarminge Jul 20, 2026
44ca782
fix(acp): release turns after interrupt timeout
juliusmarminge Jul 20, 2026
bab386e
fix(acp): bind MCP credentials to activated threads
juliusmarminge Jul 20, 2026
5fc2f9b
fix(orchestrator): harden Grok v2 lifecycle (#3578)
mwolson Jul 20, 2026
26111b2
fix(orchestrator): dedupe Grok continuation dispatch
juliusmarminge Jul 20, 2026
9462eee
fix(orchestrator): Harden Grok v2 runtime lifecycle
mwolson Jul 20, 2026
0fb7024
test(orchestrator): align integration fixtures
juliusmarminge Jul 20, 2026
38e46e7
fix(mobile): support Hermes collection sorting
juliusmarminge Jul 20, 2026
e50314b
fix(grok): align ACP extensions with open source runtime
juliusmarminge Jul 20, 2026
1c2cb22
Render T3 MCP tools with branded timeline labels
juliusmarminge Jul 21, 2026
c123607
Unify T3 MCP tool presentation across clients
juliusmarminge Jul 21, 2026
64267fd
fix(orchestration): clarify agent delegation and scheduling
juliusmarminge Jul 22, 2026
4721840
fix(server): preserve released migration ordering
juliusmarminge Jul 24, 2026
1f44475
fix(web): restore v2 composer chrome
juliusmarminge Jul 24, 2026
1908806
fix(web): remove stacked composer shadows
juliusmarminge Jul 24, 2026
95ef780
refactor(web): use shared glass surfaces
juliusmarminge Jul 24, 2026
cc3aaeb
fix(web): layer nested panel popups correctly
juliusmarminge Jul 24, 2026
2d9f35b
fix(web): contain thread details panel effects
juliusmarminge Jul 24, 2026
96e221a
test(orchestrator): Align post-merge CTM fixtures (#4193)
mwolson Jul 24, 2026
8a0d5b2
fix(orchestrator): Preserve claude/codex post-interrupt recovery stat…
mwolson Jul 24, 2026
8378c5d
test(orchestrator): align Codex approval reviewer replays (#4457)
juliusmarminge Jul 24, 2026
475c725
fix(orchestrator): hydrate shell cache and group multi-environment pr…
mwolson Jul 24, 2026
c224bd9
feat(subagents): disclose projected results consistently (#3866)
PixPMusic Jul 24, 2026
d7379fe
Add worktree handoff and status tools to the t3-code MCP server (#3754)
nsxdavid Jul 24, 2026
6d74c10
fix(mobile): wait for fork shell before navigation
juliusmarminge Jul 24, 2026
7834327
fix(server): keep derived threads awake
juliusmarminge Jul 24, 2026
cd789f2
fix(server): enforce ACP auth and preserve fork provenance
juliusmarminge Jul 24, 2026
7d60ddf
fix(server): clean up Claude replay failures
juliusmarminge Jul 24, 2026
a995fbc
test(orchestrator): align merged V2 compatibility checks
juliusmarminge Jul 27, 2026
4fc9aec
fix(grok): Prevent spurious wake run after in-turn monitors
mwolson Jul 21, 2026
02911be
fix(acp): Preserve wake evidence across an app-owned wake
mwolson Jul 25, 2026
a35bd19
fix(orchestrator): Wake settled parents when delegated children finish
mwolson Jul 25, 2026
dc3cda1
fix(claude): Settle positive task-notification results
mwolson Jul 27, 2026
3786a70
fix: hide subagent threads from v2 lists
Yusuf007R Jul 25, 2026
2417d1b
fix: ignore subagents when sorting sidebar projects
Yusuf007R Jul 25, 2026
81c840e
fix(web): restore checked-in project scripts
juliusmarminge Jul 27, 2026
ce1411f
chore(orchestrator): refresh checks after main sync
juliusmarminge Jul 27, 2026
f73d069
feat: migrate v1 state into orchestrator v2 (#4400)
juliusmarminge Jul 27, 2026
c60722e
fix(orchestrator): schedule effects from durable deadlines (#4656)
juliusmarminge Jul 28, 2026
a908b23
fix(orchestration): harden scheduled task startup
juliusmarminge Jul 28, 2026
92930ad
fix(mobile): preserve active thread state
juliusmarminge Jul 28, 2026
4f704d2
fix(orchestration): preserve legacy schedule compatibility
juliusmarminge Jul 28, 2026
04eaecc
fix(contracts): reject invalid legacy intervals
juliusmarminge Jul 28, 2026
9a8a1f2
fix(acp): make xai cancellation reliable
juliusmarminge Jul 28, 2026
79d8def
fix(orchestration): handle checkpoint-wait runs
juliusmarminge Jul 28, 2026
0fb1d24
fix(orchestration): cancel queued work on archive
juliusmarminge Jul 28, 2026
f404535
fix(mobile): allow archiving post-provider work
juliusmarminge Jul 28, 2026
9f46021
fix(mobile): distinguish queued and waiting archive states
juliusmarminge Jul 28, 2026
9baf3f7
fix(cursor): log close attempts before execution
juliusmarminge Jul 28, 2026
4f830f1
fix(acp): discover final teardown descendants
juliusmarminge Jul 28, 2026
024902e
fix(checkpoints): preserve valid run history
juliusmarminge Jul 28, 2026
d252f3a
fix(orchestration): preserve imported conversation state
juliusmarminge Jul 28, 2026
66bff7f
fix(acp): enforce task and permission invariants
juliusmarminge Jul 28, 2026
6892b41
fix(testkit): harden provider replay recording
juliusmarminge Jul 28, 2026
154d8c8
fix(server): isolate deterministic attachment ids
juliusmarminge Jul 28, 2026
14987ea
fix(claude): preserve explicit model options
juliusmarminge Jul 28, 2026
3e4b7d6
fix(web): enforce secure provider field defaults
juliusmarminge Jul 28, 2026
c938204
fix(client): preserve live thread relationships
juliusmarminge Jul 28, 2026
98deae5
fix(checkpoints): retain thread-start baseline after failed runs
juliusmarminge Jul 29, 2026
5006de4
fix(mobile): gate thread controls on live runs
juliusmarminge Jul 29, 2026
d6b912c
fix(orchestrator): address late review findings
juliusmarminge Jul 29, 2026
bd643ab
fix(orchestrator): handle fresh review edge cases
juliusmarminge Jul 29, 2026
8773649
fix(orchestrator): harden provider edge cases
juliusmarminge Jul 29, 2026
241783d
fix(orchestrator): execute resolved runtime responses
juliusmarminge Jul 29, 2026
a904494
fix(orchestrator): release stranded effect claims
juliusmarminge Jul 29, 2026
f6a9693
fix(worktrees): make handoff rollback atomic
juliusmarminge Jul 29, 2026
e962b17
fix(orchestrator): avoid replaying settled effects
juliusmarminge Jul 29, 2026
9ca5ee7
fix(orchestrator): preserve retryable effect failures
juliusmarminge Jul 29, 2026
1c68b48
fix(orchestrator): preserve terminal effect outcomes
juliusmarminge Jul 29, 2026
cbd9896
fix(orchestrator): validate replay edge cases
juliusmarminge Jul 29, 2026
1de8942
fix(orchestrator): decode direct Claude result blocks
juliusmarminge Jul 29, 2026
e6fe621
fix(orchestrator): close cancellation edge cases
juliusmarminge Jul 29, 2026
f62933d
fix(orchestrator): validate rollback and search links
juliusmarminge Jul 29, 2026
2fe0dae
fix(server): preserve project mutation client errors
juliusmarminge Jul 29, 2026
8078267
fix(orchestrator): preserve migrated and nested history
juliusmarminge Jul 29, 2026
bd5310c
fix: address orchestration review findings
juliusmarminge Jul 29, 2026
6455a02
fix(mobile): label queued message intent
juliusmarminge Jul 29, 2026
8872102
fix: address orchestration review findings
juliusmarminge Jul 29, 2026
a410c2d
fix: preserve orchestration task identity
juliusmarminge Jul 29, 2026
adf3621
fix: address latest orchestration review findings
juliusmarminge Jul 29, 2026
deb4d57
fix: preserve thread management failure semantics
juliusmarminge Jul 29, 2026
46342d8
fix: close failed provider adapter scopes
juliusmarminge Jul 29, 2026
a646c6b
feat(server): surface legacy thread migration progress
juliusmarminge Jul 29, 2026
4ba7211
feat(orchestration): track provider retries and thread visits
juliusmarminge Jul 29, 2026
fa94c40
[codex] feat(web): show git progress in the commit button (#4963)
juliusmarminge Jul 30, 2026
275d307
perf(orchestration): per-thread shell deltas, visit throttling, event…
juliusmarminge Jul 30, 2026
60088fb
fix(chat): prevent stale timeline scroll and rerenders
juliusmarminge Jul 30, 2026
42733d3
fix(relay): stop replaying the whole event store into the awareness r…
juliusmarminge Jul 30, 2026
e5b9546
perf(web): keep timeline minimap animations off the main thread
juliusmarminge Jul 30, 2026
df81329
feat(orchestration): port thread title regeneration to the v2 runtime
juliusmarminge Jul 30, 2026
c83ed4c
fix(orchestration): thread visits no longer create activity loops (#5…
Yusuf007R Jul 30, 2026
10addb0
fix(orchestration): promoted queued messages keep the queued_turn intent
juliusmarminge Jul 30, 2026
fb37332
refactor(orchestration): split thread-not-sendable into typed errors
juliusmarminge Jul 30, 2026
7db2a49
fix(web): remove elevated thread details panel styling
juliusmarminge Jul 30, 2026
4f70fcb
fix(web): keep Git progress title anchored
juliusmarminge Jul 30, 2026
ab978b6
fix: reconcile rebase with latest main
maria-rcks Aug 3, 2026
1955e2b
fix(orchestration-v2): restore generated thread titles (#5176)
Yusuf007R Aug 4, 2026
112dcea
fix(orchestrator): Order thread lineage by creation time (#5310)
mwolson Aug 4, 2026
d1a202e
fix(server): restore worktree branch naming in the v2 orchestrator (#…
juliusmarminge Aug 4, 2026
a5ee6ea
feat(chat): refine V2 conversation UI (#5307)
maria-rcks Aug 4, 2026
586e024
fix: adopt effect beta.103 APIs in rebased v2 code
juliusmarminge Aug 4, 2026
571fa94
fix: send mcp-protocol-version header in worktree registration test
juliusmarminge Aug 4, 2026
be08ead
fix(web): restore compact header sizing for project script controls
juliusmarminge Aug 4, 2026
653c698
test(server): cover v2 thread title regeneration
juliusmarminge Aug 4, 2026
aa0751b
chore: resolve lint warnings across v2 code
juliusmarminge Aug 4, 2026
2199531
fix(test): keep codex replay recovery off the repo checkout
juliusmarminge Aug 4, 2026
fbb47a4
fix(orchestrator): Prevent redundant delegated completion turns (#5311)
mwolson Aug 5, 2026
0867f0f
fix(server): stop tying codex text-generation temp files to the calle…
juliusmarminge Aug 5, 2026
f7a7f20
fix(web): remove open PR actions from git controls
juliusmarminge Aug 5, 2026
cfb4571
fix(server): renumber v2 migrations after main's 036_ProjectionThread…
juliusmarminge Aug 5, 2026
3448e9a
fix: port main fixes stranded by the v2 rewrite
juliusmarminge Aug 5, 2026
36d180b
test(server): align migration expectations with renumbered ids
juliusmarminge Aug 5, 2026
9124b94
feat(orchestrator): Surface waiting background work (#4378)
mwolson Aug 5, 2026
16bd686
fix(web): align git action progress button layout
juliusmarminge Aug 6, 2026
61384a3
fix: repair conflict-marker artifacts from rebase auto-resolutions
juliusmarminge Aug 7, 2026
41e5692
fix(server): renumber v2 migrations after main's 037_ProjectionTurnsK…
juliusmarminge Aug 7, 2026
06aab68
fix: port main fixes stranded by the v2 rewrite (round 2)
juliusmarminge Aug 7, 2026
9977a32
chore(web): prune plan-sidebar leftovers after the inline-plans rework
juliusmarminge Aug 7, 2026
ab912d4
fix(web): port the refined live-follow gesture gating to the v2 timeline
juliusmarminge Aug 7, 2026
01feae2
fix(web): let LegendList own end-follow and disclosure anchoring (#5449)
juliusmarminge Aug 7, 2026
d515bb3
fix(web): show Git action success inline in panel
juliusmarminge Aug 10, 2026
a90e347
fix: repair rerere-damaged files and reconcile main's round-3 feature…
juliusmarminge Aug 10, 2026
c8ac342
chore(server): renumber v2 migrations 038-046 to 041-049 after main's…
juliusmarminge Aug 10, 2026
1e74732
fix(server): port round-3 main fixes into the v2 orchestrator
juliusmarminge Aug 10, 2026
523ef2a
test(web): restore main's right-panel migration expectations after th…
juliusmarminge Aug 10, 2026
a27c1cc
test(server): expect attachment saved-at lines in ClaudeAdapterV2 tur…
juliusmarminge Aug 10, 2026
ff032dd
fix(web): restore the branch's slim chat header
juliusmarminge Aug 10, 2026
1353f9e
feat(server): durable observe-only PR monitor foundation (#181)
ronak-guliani Aug 11, 2026
3d4214e
feat(server): durable PR monitor feedback delivery and reporting (#182)
ronak-guliani Aug 12, 2026
0e1ddf1
feat(server): PR monitor ownership and review-thread handoff (#183)
ronak-guliani Aug 12, 2026
7333e71
feat(server): PR monitor fallback maintenance threads (#184)
ronak-guliani Aug 12, 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: 21 additions & 0 deletions .agents/skills/ios-debugger-agent/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) OpenAI

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
64 changes: 64 additions & 0 deletions .agents/skills/ios-debugger-agent/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
name: ios-debugger-agent
description: Build, launch, inspect, and drive iOS apps with the repository-configured XcodeBuildMCP server. Use on macOS for iOS Simulator builds, focused native test runs, semantic UI automation, screenshots, logs, or debugging, including T3 Code Mobile verification.
---

# iOS Debugger Agent

Use the repository-configured `xcodebuildmcp` tools instead of requiring a globally installed Codex plugin. Prefer MCP tools over raw `xcodebuild`, `xcrun`, or `simctl` when the client exposes them.

## Confirm availability

This workflow requires macOS 14.5 or newer, Xcode 16 or newer, and Node.js 18 or newer. The repository pins XcodeBuildMCP in both `.mcp.json` for Claude Code and `.codex/config.toml` for Codex. Project MCP servers may require one-time trust or approval followed by a new session.

If the tools are missing:

1. Confirm the repository is trusted and its project MCP server was approved.
2. Restart or recreate the agent session after approving configuration.
3. Run `npx --yes xcodebuildmcp@2.6.2 doctor` when the server starts but simulator or UI-automation tools are unavailable. Follow its actionable Xcode or AXe setup guidance.
4. Fall back to the pinned XcodeBuildMCP CLI or native Apple CLIs only when the current agent client cannot expose project MCP tools.

Do not ask contributors to install the OpenAI `build-ios-apps` plugin globally.

## Establish one simulator context

1. Call `session_show_defaults` before discovery, build, launch, or UI work.
2. Call `list_sims` and select one explicit simulator UDID. Prefer a simulator that is already booted; boot an installed simulator when verification requires it, but do not create or download runtimes without user authorization.
3. Call `session_set_defaults` with the project or workspace, scheme, Debug configuration, simulator ID, and bundle identifier when known.
4. Keep every subsequent build, launch, screenshot, log capture, and UI action pinned to that same UDID.

Avoid generic Mac window automation for switching among Simulator windows. Explicit device identity is more reliable.

## Choose build or launch

- Use `build_run_sim` when native source, native dependencies, entitlements, or project configuration changed.
- Use `test_sim` for the smallest relevant native test target or test cases; do not run an entire workspace test matrix routinely.
- Use `launch_app_sim` when a compatible app is already installed and no native rebuild is needed.
- To reuse an existing build artifact, use `get_sim_app_path` or `get_app_bundle_id`, install it with `install_app_sim` when necessary, and then launch it.
- Do not run a build-only action immediately before `build_run_sim` unless the task requires both artifacts.

After launch, call `snapshot_ui` or `screenshot` before interacting. An open Simulator window alone is not evidence that the intended app launched.

## Drive the UI semantically

1. Call `snapshot_ui` to obtain the current accessibility hierarchy and element references.
2. Use only current `elementRef` values whose snapshot entries list the intended action. XcodeBuildMCP `2.6.2` does not accept coordinates for `tap`; when the app exposes no actionable reference, prefer a registered deep link or another app-supported route and otherwise report the accessibility blocker.
3. Refresh with `snapshot_ui` after navigation or layout changes. Element references are snapshot-specific.
4. Use `wait_for_ui` for asynchronous transitions when available rather than fixed sleeps.
5. Capture a final `screenshot` for the state that proves the affected flow.

Use `gesture` or scoped swipe actions when needed. If a gesture is unreliable, return to a known route or relaunch rather than switching to generic desktop automation.

## Capture logs and debug

- Use `start_sim_log_cap` and `stop_sim_log_cap` with the exact bundle identifier for focused runtime logs.
- Use debugger tools only when the task requires runtime diagnosis; attach to the selected simulator and app rather than an ambiguous process.
- Summarize relevant errors instead of returning unbounded logs.

## Clean up

Stop only log captures, debugger sessions, apps, or simulators started for the current test. Leave pre-existing simulators and unrelated sessions alone.

## Upstream

Adapted from OpenAI's [`build-ios-apps`](https://github.com/openai/plugins/tree/main/plugins/build-ios-apps) plugin version `0.1.2` (`ios-debugger-agent`, MIT) and aligned with XcodeBuildMCP `2.6.2` tool names.
9 changes: 9 additions & 0 deletions .agents/skills/ios-debugger-agent/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
interface:
display_name: "iOS Debugger Agent"
short_description: "Build and drive iOS Simulator apps"
default_prompt: "Use $ios-debugger-agent to build, launch, and inspect the current iOS app on Simulator."
dependencies:
tools:
- type: "mcp"
value: "xcodebuildmcp"
description: "Repository-configured Xcode build, simulator, logging, debugging, and semantic UI tools"
21 changes: 21 additions & 0 deletions .agents/skills/ios-simulator-browser/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) OpenAI

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
51 changes: 51 additions & 0 deletions .agents/skills/ios-simulator-browser/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
name: ios-simulator-browser
description: Stream an explicit iOS Simulator through pinned serve-sim into the T3 Code in-app browser or another agent browser. Use on Apple Silicon macOS when the user should watch simulator verification live or when browser-visible simulator evidence is needed.
---

# iOS Simulator Browser

Use serve-sim as the shared visual feed for an iOS Simulator. Use `ios-debugger-agent` and XcodeBuildMCP semantic UI tools to drive the app; do not treat browser-canvas coordinates as a substitute for missing app accessibility.

## Confirm availability

serve-sim `0.1.45` requires Apple Silicon macOS, Xcode command-line tools, and Node.js 20 or newer. If the host is unsupported, continue with XcodeBuildMCP screenshots and report that live streaming was unavailable.

When running inside T3 Code, use its product-native browser MCP to open the stream. Other agent hosts may use their own browser or preview surface.

Keep serve-sim on its default `127.0.0.1` binding. Do not expose its preview to a LAN or tunnel unless the user explicitly requests that access and the network is trusted; the preview includes a token-gated shell-execution route.

## Start one owned stream

1. Obtain the exact simulator UDID from the iOS build or launch workflow.
2. Check whether an existing serve-sim stream for that UDID belongs to another task. Reuse it only when explicitly shared; never kill another task's stream.
3. Otherwise, clear only a stale stream for that UDID and start the pinned version with scoped cleanup:

```bash
SIMULATOR_ID=<simulator-udid>
cleanup_serve_sim() {
npx --yes serve-sim@0.1.45 --kill "$SIMULATOR_ID" >/dev/null 2>&1 || true
}
trap cleanup_serve_sim EXIT INT TERM HUP
cleanup_serve_sim
npx --yes serve-sim@0.1.45 "$SIMULATOR_ID"
```

4. Keep the terminal alive and open the exact local URL printed by serve-sim in the agent's browser.
5. Verify that a live simulator frame renders. A loaded wrapper page is not sufficient evidence.

## Observe while driving semantically

- Let the user watch the serve-sim stream while XcodeBuildMCP performs `snapshot_ui`, semantic taps, typing, gestures, and screenshots.
- Keep the browser and Xcode tooling pinned to the same simulator UDID.
- Do not switch to generic desktop automation or browser-canvas clicking merely because the stream is visible.

If the in-app browser explicitly reports that previews are unavailable, do not install unrelated browser automation. Continue through XcodeBuildMCP, capture a simulator screenshot, report the unavailable live stream, and clean up the owned serve-sim process.

## Finish

Stop the long-running terminal and wait for its cleanup trap to finish. If it disappeared without cleanup, run `npx --yes serve-sim@0.1.45 --kill <simulator-udid>` for that exact simulator. Never run an unscoped `--kill`.

## Upstream

Adapted from OpenAI's [`build-ios-apps`](https://github.com/openai/plugins/tree/main/plugins/build-ios-apps) plugin version `0.1.2` (`ios-simulator-browser`, MIT). It invokes serve-sim `0.1.45` under its Apache-2.0 license without vendoring the package.
4 changes: 4 additions & 0 deletions .agents/skills/ios-simulator-browser/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "iOS Simulator Browser"
short_description: "Stream iOS Simulator in the browser"
default_prompt: "Use $ios-simulator-browser to stream the selected iOS Simulator into the T3 Code in-app browser."
90 changes: 90 additions & 0 deletions .agents/skills/test-t3-app/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
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.
---

# Test T3 App

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.

## Start an isolated web environment

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`. Add `--share` when the user needs to open it from another tailnet device. In a linked worktree it defaults to that worktree's gitignored `.t3`; pass `--home-dir <base-dir>` only when the test needs a different isolated directory.
4. Keep the terminal session alive and read the selected server port, web port, base directory, and pairing URL from its output.

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.

The worktree-local default deliberately outranks an ambient `T3CODE_HOME`; do not pass the shared home through to a worktree dev server.

Ports are derived from the worktree path but can shift when occupied. Always read the actual values from the `[dev-runner]` line.

Shared browser dev is single-origin: Vite proxies the backend paths, so never set `VITE_HTTP_URL` or `VITE_WS_URL` for `dev`/`dev:web`.

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.

### 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.

Do not open the other person's complete pairing URL during this reachability check; doing so consumes its one-time token. If the agent also needs an authenticated browser, create and consume a separate pairing token, then leave a fresh token for the other person.

## Preserve the environment while iterating

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

- 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. Include a pairing token only when the user still needs to pair (see below).

## 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.

Keep pairing URLs out of screenshots, committed files, and durable logs. When the user asked for a shared environment, the deliverable IS the full pairing URL — paste it in your reply, token and all; a bare origin is useless to them. A pairing token is short-lived and single-use; opening the URL in another browser or opening it twice can consume it, so never open a URL you handed to the user.

## Recover a consumed or expired pairing token

Run `node apps/server/src/bin.ts pair` from the repository root. It discovers the running dev server (worktree `.t3` first, same precedence as the dev runner) and prints a fresh `Pair URL` against the server's current web origin, including a `--share` tailnet origin. Pass `--base-dir <base-dir>` only when the server was started with `--home-dir`, using the identical path.

Tokens from `pair` carry standard client scopes. The startup pairing URL carries admin scopes; if the user needs Settings → Connections management (`access:write`), restart the server and hand over the new startup URL instead.

## 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`.
4 changes: 4 additions & 0 deletions .agents/skills/test-t3-app/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +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."
Loading
Loading