## pingdotgg/t3code — v0.0.46-nightly.20261005.2702…v0.0.46-preview.20261002.2598

_823+ commits._

### Features
- **feat(server): Pi 1.0 support, with replay fixtures recorded on 1.0 (#14688)** (de95adc)
- **feat(server): OpenCode 2 text generation, MCP injection and restart reconciliation (#14386)** (a2ca40a)
- **feat(server): OpenCode 2 compaction, plan mode and workspace inventory (#14374)** (6fa450f)
- **feat(server): OpenCode 2 native steering, fork and rollback (#14468)** (40920d9)
- **feat(server): OpenCode 2 subagents and background wake-ups (#14474)** (2330919)
- **feat(server): OpenCode 2 approvals, questions and every runtime mode (#14407)** (5eae8ff)
- **feat(server): report OpenCode 2 usage, context windows, models and history (#14270)** (253ef68)
- **feat(server): run turns, text, reasoning and tools on OpenCode 2 (#14269)** (f3eb99e)
- **feat(server): run OpenCode 2 servers from the driver (#14241)** (1f657e8)
- **feat(server): detect OpenCode 1.x or 2.x per instance and route by it (#14239)** (14f74e1)
- **feat(clients): background work says what it is and which subagent finished (#13949)** (b9ffe49)
- **feat(server): background wakes say which subagent, command, or monitor finished (#13948)** (b76f762)
- **feat(server): continue settled threads that lost background work in a restart (#13901)** (fc1ecf8)
- **feat(mcp): expose thread settlement in t3_thread_list and t3_thread_read (#13489)** (402205e)

### Fixes
- **fix(server): long T3 tool calls from Claude no longer time out at 60 seconds (#14835)** (3eaae44)
- **fix(server): Stop always ends the background work a thread shows (#14636)** (66a9107)
- **fix(server): OpenCode 2 keeps a reused subagent's background work and forks before continuations (#14679)** (b729550)
- **fix(server): a subagent's events are no longer stored twice across runs (#14665)** (f438d65)
- **fix(server): a Claude subagent's own subagents no longer wake the root agent (#14641)** (b08e051)
- **fix(server): a Claude-initiated turn no longer ends a queued /compact early (#14547)** (0fbd755)
- **fix(server): a Claude subagent's own subagents run on their requested model (#14583)** (4d72e2c)
- **fix(clients): a paused queue no longer shows the thread as working (#14616)** (7b616a3)
- **fix(server): Claude steers no longer fail when only next-turn options differ (#14615)** (0613071)
- **fix(clients): stop stranded thinking after a steer (#14546)** (981cd69)
- **fix(server): a named project never deletes a folder another project owns** (3b6d791)
- **fix(build): desktop and CLI builds resolve catalog overrides on selectors (#14529)** (4ee6c32)
- **fix(server): keep ScratchWorkspace.make private** (d17305f)
- **fix(server): two Scratch threads never share a folder** (1f0a1ad)
- **fix(server): checkpoint restore ignores the cwd of a provider session shared across threads (#14502)** (f48d257)
- **fix(server): Grok's reply to a finished background command opens its own run (#14488)** (9449473)
- **fix(server): Grok API errors fail the run instead of completing it empty (#14487)** (f82eb0f)
- **fix(server): preview builds keep their bundled OpenCode 2 compatibility policy (#14368)** (0fb3731)
- **fix(server): reject overlapping v2 checkpoint restore workspaces (#14370)** (1716694)
- **fix(server): process-group kills never reach every process the user owns (#14461)** (6562235)
- **fix(web): show accurate, steady thread relationship status (#14412)** (89f4f81)
- **fix(web): Stop works while a run is still starting (#14201)** (0a42dd3)
- **fix(server): managed Codex refreshes after sign-out even when a check was interrupted (#14376)** (8297ccf)
- **fix(server): V2 Codex sessions identify as T3 Code, like main (#14377)** (f71c079)
- **fix(clients): a thread left running a dev server alerts as completed (#14213)** (82f884d)
- **fix(web): thread panel lists the project's saved scripts (#14350)** (8ca8bd7)
- **fix(web): grow tool groups when details expand (#13171)** (1f2311c)
- **fix(server): Claude monitors show as monitors, not commands (#14191)** (cb64162)
- **fix(server): OpenCode background subagents keep their session alive (#14199)** (e49357f)
- **fix(clients): a failed turn shows as failed while background work is pending (#14184)** (e364854)
- **fix(server): detaching a Codex thread unloads it from the shared app-server (#14187)** (a3f967a)
- **fix(server): a turn that fails to start after its session opens now fails the run (#14183)** (e2a8620)
- **fix(server): threads mid-turn continue after a restart on every provider (#14182)** (2b9a4ad)
- **fix(server): shell reads no longer scan every runless item per failed thread (#14181)** (977bf4a)
- **fix(server): tell the provider when a restart killed its background work (#13895)** (39e6fbb)
- **fix(server): "Edit from here" works on a message after a stopped run (#13883)** (7b80085)
- **fix(server): harden the rollback failure marker (#13911)** (b2ed076)
- **fix(server): stop OpenCode servers left behind by a crashed server (#13879)** (fe6553e)
- **fix(clients): older clients skip event types they don't know instead of breaking (#13941)** (b222464)
- **fix(server): parents keep getting woken for every delegated task that finishes (#13938)** (b39e62d)
- **fix(server): Claude wake turns keep the rejected limit's reset time (#13539)** (0dcb029)
- **fix(v2): show read and search tool activity accurately (#13375)** (a3fbbe4)
- **fix(server): preserve queued messages after usage limits (#13877)** (4018a6c)
- **fix(server): a failed rollback shows an error instead of hanging (#13887)** (9fcc9a4)
- **fix(server): Stop ends a Claude thread's background work after the turn settles (#13792)** (069058c)
- **fix(server): allow handoff after a provider session detaches (#13882)** (00e1a9c)
- **perf(server): Codex item maps no longer grow and copy for the whole session (#13876)** (93dbb55)
- **perf(server): ACP item ordinals no longer copy a session-wide map per item (#13868)** (52d84bd)
- **perf(server): Cursor item ordinals no longer copy a session-wide map per item (#13866)** (2d359e3)
- **perf(server): Claude item ordinals no longer copy a session-wide map per item (#13864)** (2e68ee5)
- **fix(server): recover Cursor sends from abandoned local runs (#13878)** (eec0514)
- **fix(server): preserve context occupancy across model handoffs (#13871)** (6cae455)
- **fix(server): keep running after Cursor shell spawn failures (#13862)** (bfb3501)
- **fix(server): retry Cursor text generation without sandboxing (#13863)** (d6c539e)
- **fix(server): Codex rollback works after the app-server restarts (#13787)** (2c388da)
- **fix(server): sandboxed Cursor threads keep working after a Full access thread (#13805)** (4fafbbe)
- **fix(server): Pi rollback works past a turn you stopped (#13797)** (d2269c3)
- **fix(server): Grok background shell commands stay in the run that started them (#13789)** (75afe68)
- **fix(server): a Cursor command you stop shows as interrupted (#13806)** (c38c60f)
- **fix(web): a command you stop stays in the timeline (#13790)** (43b480b)
- **fix(server): Codex plans offer Implement again (#13793)** (0481b76)
- **fix(server): Implement starts a run from a proposed plan again (#13775)** (55cb2fc)
- **fix(server): Claude asks before commands in Auto-accept edits (#13786)** (3ec7df1)
- **fix(server): ACP auto-approvals allow once instead of always (#13802)** (98400c6)
- **fix(server): Grok's "Always allow this session" no longer saves a project-wide grant (#13796)** (954dbd7)
- **fix(server): allow forks from provider-finished runs (#13541)** (b882b10)
- **fix(server): a Claude subagent resumed after a server restart stays in its thread (#13735)** (70629cd)
- **fix(server): Grok's Auto mode asks you about commands its classifier blocks (#13732)** (fd4d3f0)
- **fix(server): finished Claude subagents leave no running rows (#13730)** (c48e8a9)
- **fix(clients): subagent threads fold their work like other threads (#13725)** (bb89d58)
- **fix(clients): provider subagent threads never show a composer (#13727)** (d1f92e6)
- **fix(server): Grok replies finish when Grok finishes them, not when background work does (#13728)** (f969b21)
- **fix(server): subagent approvals always land in the parent run (#13726)** (01dba73)
- **fix(server): ACP mode picks reach agents that name their mode option differently (#13724)** (cbe13c4)
- **fix(server): Grok no longer offers Auto-accept edits (#13719)** (fe565ae)
- **fix(server): Antigravity keeps its workspace containment (#13613)** (1d1b3bc)
- **fix(server): V2 Grok launches in the thread's permission mode (#13616)** (541b6b9)
- **fix(server): finish Grok background subagents from subagent_finished (#13609)** (48b5111)
- **fix(server): Codex subagent approvals show up in the parent thread (#13703)** (e1b6476)
- **fix(clients): native subagent threads show status instead of a composer (#13624)** (d3179b6)
- **fix(server): a resumed Claude subagent's thread shows the message that resumed it (#13668)** (a4cd403)
- **fix(server): Claude subagent threads show their thinking (#13626)** (690c57f)
- **fix(server): startup recovery settles native subagent threads (#13619)** (6c39f90)
- **fix(clients): native subagent threads show when they are working (#13614)** (b64278c)
- **fix(server): show diffs for ACP edits that send oldText/newText (#13579)** (1f2f91d)
- **fix(server): ACP agents can read files under on-request approval (#13584)** (f8b8634)
- **fix(server): Grok monitor updates stay running until Grok says they finished (#13557)** (175e2bd)
- **fix: reconcile latest main changes with V2** (bf1e8c5)
- **fix(web): resize floating previews smoothly above the composer** (3d23e15)
- **fix(server): Codex V2 threads show todo lists again (#13546)** (20c5739)
- **fix(server): Cursor sandboxed threads find their helper when running from source (#13571)** (3cb31a1)
- **fix(web): align workspace controls and restore split hover states** (37da532)
- **fix(server): keep a Claude wake reply off the user's queued message (#13535)** (cb879a9)
- **fix(codex): preserve native item start times (#13525)** (3413d33)

### Backend
- **Merge main into the V2 branch (#13742)** (65cab67)
- **Merge main into the V2 branch (record ancestry)** (18cf621)

### Tests
- **test(web): import the drop helpers the Working shelf tests use** (af7de21)
- **test(server): stop ACP soft-steer tests racing the prompt settle (#13201)** (6134998)
- **test(server): support replay gates for ACP providers (#13594)** (fed2604)
- **test(clients): retain main relay compatibility regression coverage** (87c67bd)
- **test(server): assert the read-only on-request write by its permission (#13562)** (81744b3)
- **test(server): record Grok replay fixtures from a live grok agent (#13537)** (cb8dce4)
- **test(server): record Codex replay fixtures on gpt-6-luna and Codex 0.156.1 (#13533)** (75c7e9e)
- **test(server): record Claude background task and subagent lifecycles live (#13517)** (85aaa11)
- **test(server): remove replay harness self-tests (#13531)** (06e80a6)
- **test(server): replace Pi adapter unit tests with live replay fixtures (#13515)** (899a93a)

### Docs
- **docs: ACP agents run their own tools, and Grok has no Auto-accept edits (#13634)** (de612cf)

### Chore
- **chore(v2): merge main into the V2 branch (3 commits)** (b37fcea)
- **chore(v2): merge main into the V2 branch (15 commits)** (3d45bd9)
- **chore(v2): merge main into the V2 branch (#14668)** (6f042ef)
- **chore(v2): merge t3code/codex-turn-mapping into the project-folders refactor** (fa65ee6)
- **refactor(server): projects T3 creates for you run through one service** (a5d108e)
- **chore(v2): merge main into the V2 branch (11 commits)** (bb607b0)
- **refactor(server): threads without a project run through a ScratchWorkspace service** (18e38d3)
- **chore(v2): merge t3code/codex-turn-mapping into the main sync** (6b1d22f)
- **chore(v2): merge main into the V2 branch (12 commits)** (f1e6515)
- **build(server): add the OpenCode 2 Effect client (#14221)** (79e3d0a)
- **refactor(orchestration-v2): import Effect services as namespaces (#14387)** (2dfd313)
- **refactor(clients): import Effect services as namespaces (#14389)** (4e51609)
- **refactor(server): import Effect services as namespaces (#14385)** (16d72f4)
- **chore(v2): merge main into the V2 branch (9 commits)** (d2a8797)
- **chore(v2): merge main into the V2 branch (17 commits)** (cd66adf)
- **chore(v2): merge main into the V2 branch (18 commits)** (30f2131)
- **chore(clients): delete client code nothing calls (#14056)** (e78f5b3)
- **refactor(contracts): retire the legacy orchestration schemas (#14024)** (f9ff8e2)
- **refactor(server): quarantine the V1 importer (#14018)** (babea40)
- **chore(server): delete the V1 decider, projector and V1-only repos (#14017)** (f100c04)
- **refactor(server): thread search and git project lookup read V2 (#14015)** (613a1b2)
- **refactor(server): project reads and replay stats leave ProjectionSnapshotQuery (#14012)** (1d6bc0e)
- **refactor(server): project commands commit through EventSinkV2 (#13960)** (6e0c38e)
- **chore(v2): merge main into the V2 branch (48 commits) (#13800)** (0b4f386)
- **refactor(server): fence the ACP registry adapter's per-agent exceptions (#13729)** (4812e12)
- **refactor(server): remove the generic ACP client fs guard and write grants (#13633)** (86e3487)
- **refactor(server): ACP client fs and terminals are opt-in per flavor (#13623)** (6107b66)
- **refactor(server): record Cursor replay fixtures with Effect (#13556)** (7381ed9)
- **chore(web): keep the thread details split surface class module-private (#13570)** (c361921)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/pingdotgg/t3code?utm_source=github-action)._