What's Changed
- Add middle-click close for right panel tabs by @huxcrux in #3161
- fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in #3588
- Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in #3620
- Restore the ultrathink frame border effect by @juliusmarminge in #3625
- fix(dev): Fix electron dev launch and add test by @t3dotgg in #3662
- Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in #3514
- fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in #3667
- Make the thread composer read as elevated liquid glass by @juliusmarminge in #3668
- Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in #3679
- Surface pending tasks in mobile home and draft flow by @juliusmarminge in #3670
- fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in #3687
- Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in #3683
- Load thread snapshots over HTTP before live sync by @juliusmarminge in #3719
- Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in #3684
- Improve live activity routing and diagnostics by @juliusmarminge in #3685
- Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in #3759
- Use variant-specific splash icons in mobile app by @juliusmarminge in #3762
- Fix Expo widget asset wiring order by @juliusmarminge in #3763
- Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in #3761
- Clear VCS presentation state on finish by @juliusmarminge in #3764
- Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in #3768
- Add T3 Connect onboarding for mobile and web by @juliusmarminge in #3765
- Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in #3776
- Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in #3772
- Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in #3755
- Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in #3777
- Use rounded depth logo for production splash screen by @juliusmarminge in #3780
- fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in #3781
- Upgrade Clerk toolchain to latest versions by @juliusmarminge in #3785
- fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in #3790
- Fix desktop native optional dependency packaging by @Prgm-code in #3816
- [codex] Upgrade Clerk stack by @juliusmarminge in #3821
- [codex] Preserve worktree metadata during branch sync by @juliusmarminge in #3822
- feat(client): persist offline environment data and mobile preferences by @juliusmarminge in #3795
- [codex] Label max and ultra reasoning by @juliusmarminge in #3824
- fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in #3823
- Show compact PR number badges in mobile thread rows by @juliusmarminge in #3827
- Expose mobile PR indicator labels to accessibility by @juliusmarminge in #3828
- Fix truncated chat error alert layout by @jakeleventhal in #3899
- fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in #3644
- [codex] Add Android mobile support by @juliusmarminge in #3579
- Use client-side fallbacks for missing project favicons by @juliusmarminge in #3959
- Skip stale working-task notifications by @juliusmarminge in #3961
- Prepare Android beta branding and review diff UI by @juliusmarminge in #3967
- perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in #3978
- fix(docs): correct CI task-runner commands in ci.md by @kridaydave in #3990
- fix(docs): repair broken source links in architecture overview by @kridaydave in #3991
- fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in #3992
- docs: Add T3 Code Legal Docs by @juliusmarminge in #3972
- Fix Legal modal header crash by @juliusmarminge in #4000
- [codex] Fix onboarding connection status by @juliusmarminge in #4001
- Isolate native diff highlight grammar state by @juliusmarminge in #4029
- Fix macOS fullscreen titlebar spacing by @D3OXY in #4019
- Prevent duplicate project workspace roots by @juliusmarminge in #3829
- Normalize over-indented markdown list items by @juliusmarminge in #4020
- Resolve localhost preview URLs for remote environments by @juliusmarminge in #4011
- fix(mobile): Send composer images in upload wire format by @juliusmarminge in #4035
- Fix iOS terminal Enter input encoding by @juliusmarminge in #4043
- Add native mobile share target support by @juliusmarminge in #4021
- [codex] Expand real-route app store screenshot harness by @juliusmarminge in #4014
- fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in #4017
- Fix dropped events during initial thread snapshot by @D3OXY in #4079
- feat: show nightly update changelog tooltip by @HugoVizcainoSantana in #3832
- fix(git): treat selected commit paths literally by @EricTsai83 in #3998
- fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in #4077
- Refresh app icons across release variants by @juliusmarminge in #4080
- Update marketing GitHub star count by @AmoonPod in #4088
- fix(marketing): correct Cursor icon color by @AmoonPod in #4090
- Normalize protocol-relative remote host input as https by @kridaydave in #3971
- fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in #4094
- Fix documented task-runner commands (bun run -> vp) by @kridaydave in #3965
- Allow preview panel to grow on wide displays by @olivoil in #4044
- fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in #3877
- Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in #3969
- fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in #3952
- Remove unused code parameter from describePreviewError by @kridaydave in #3970
- [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in #3932
- fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in #4097
- [codex] fix mobile composer Enter behavior by @maxwellyoung in #3930
- feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in #3948
- fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in #2757
- fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in #3108
- fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in #2124
- [codex] fix: guard invalid web timestamps by @StiensWout in #3515
- [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in #3521
- [codex] Fix provider update checks restore defaults by @StiensWout in #3531
- fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in #3951
- Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in #4104
- Preserve T3 Code identity in macOS development launcher by @juliusmarminge in #4102
- fix(web): increase contrast of question option descriptions by @xxashxx-svg in #3867
- feat: draft hero landing on the index route by @yordis in #4055
- feat: file explorer mention actions and zoom-aware context menus by @yordis in #4054
- fix(mobile): restore iOS home screen branding by @PixPMusic in #4025
- perf(client): defer active thread cache writes by @Chrrxs in #4006
- Default diffs to working changes by @jakeleventhal in #3974
- Add Grok to marketing site provider list by @Aditya190803 in #3484
- Fix reopening existing Diff tab by @jakeleventhal in #3973
- Fix sending messages during active turns by @jakeleventhal in #3919
- [codex] Route OpenCode missing-session errors through Effect by @StiensWout in #3608
- [fix/feat:ui] Show default option badge by @sandersonstabo in #3232
- [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in #3225
- fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in #2508
- Allow failed remote environments to be removed by @zepi2509 in #4084
- [codex] canonicalize client timestamps by @maxwellyoung in #4112
- [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in #3234
- fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in #3621
- Refresh splash screen and favicon branding by @juliusmarminge in #4120
- Add terminal selection copy action by @tarik02 in #2904
- Add isolated app testing workflow by @juliusmarminge in #4121
- feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in #4130
- feat: add headless
t3 connectsetup for SSH hosts by @t3dotgg in #3749 - Refine T3 Connect authorization surfaces by @juliusmarminge in #4159
- fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in #4132
- fix(shared): delete unused agentAwareness phase predicates by @kridaydave in #4134
- fix(mobile): Stabilize native stack option updates by @juliusmarminge in #4037
- Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in #4162
- fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in #4166
- Fix draft banner stack overlap by @juliusmarminge in #4164
- Add portable mobile app testing guidance by @juliusmarminge in #4165
- fix(client): use lightweight connection probe by @eeinarsson in #4137
- fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in #3740
- Fix project action preview settings persistence by @keeperxy in #3842
- fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in #3889
- fix(web): handle sidebar shortcut before editors by @Bortlesboat in #3921
- fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in #3931
- Fix incorrect pluralization of “entry” by @McMelonTV in #3933
- feat(server): title background-task work-log rows with the task name by @t3dotgg in #3751
- fix: delegate OpenCode session titles to provider by @tris203 in #3720
- Archive selected threads from the context menu by @theduke in #3895
- fix(cli): support force removing projects by @Bortlesboat in #3922
- fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in #2456
- fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in #2093
- Add Codex launch arguments setting by @jamesx0416 in #2892
- [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in #3159
- Regenerate Codex reset credit protocol bindings by @juliusmarminge in #4173
- fix(preview): preserve direct localhost navigation by @Chrrxs in #3939
- Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in #4163
- Gate iOS glass layout on native support by @juliusmarminge in #4032
- fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in #3617
- fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in #4153
- fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in #3869
- [codex] show complete approval details by @maxwellyoung in #4111
- fix(web): paint text selection over composer chips by @yordis in #4139
- [codex] preserve custom model slugs by @maxwellyoung in #4168
- fix(web): preview workspace images in the file panel by @Rhiz3K in #3996
- feat(web): drag files from the explorer into the chat composer by @yordis in #4140
- fix(desktop): preserve main window bounds by @anirudhsama in #3851
- perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in #4177
- Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in #4113
- Pass CLI OAuth config to hosted web deploy by @juliusmarminge in #4186
- fix(web): always show environment chip for remote projects by @t3dotgg in #4217
- fix(web): keep composer editable while disconnected by @t3dotgg in #4241
- fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in #4240
- fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in #4244
- Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in #4026
- fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in #3100
- fix(claude): isolate capability probe from user MCP servers by @jbbottoms in #4015
- Preserve connecting status while a turn starts by @D3OXY in #4101
- fix(server): stop restoring stale OpenCode models by @nateEc in #4095
- [codex] keep scoped package references as text by @maxwellyoung in #4167
- fix(web): default provider selection for users without Codex by @mfazekas in #4117
- Unify temporary worktree branch naming by @juliusmarminge in #4278
- fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in #4279
- Stabilize sidebar settling animations by @juliusmarminge in #4280
- Restore Copy Link in chat link context menu by @caezium in #4161
- fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in #4213
- Preserve draft thread highlighting during promotion by @juliusmarminge in #4283
- Move mobile working timer into the thread timeline by @juliusmarminge in #4285
- Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in #4281
- fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in #4269
- fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in #4289
- feat(web): copy branch name via right-click in the branch selector by @t3dotgg in #4275
- Add remote server updates and standalone service management by @juliusmarminge in #4286
- Refine light-mode sidebar surfaces by @juliusmarminge in #4268
- fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in #3949
- improve and prevent silent thread branch drift and PR fetching by @justsomelegs in #2284
- Refresh web application surfaces and dark-mode dialogs by @maria-rcks in #4319
- fix(web): new-thread defaults ignored for remote environments by @t3dotgg in #4276
- feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in #4272
- Add shared t3.json project configuration support by @juliusmarminge in #4317
- Unify dialog glass and fix composer overlays by @juliusmarminge in #4365
- fix(web): warn before silent Windows updates by @nateEc in #4350
- [codex] Move project grouping to General settings by @juliusmarminge in #4313
- [codex] Group project scopes in mobile thread lists by @juliusmarminge in #4314
- [codex] Move mobile project grouping to General settings by @juliusmarminge in #4315
- [codex] Deduplicate connection failure messaging by @juliusmarminge in #4367
- Restore grouped project filtering in Sidebar V2 by @shivamhwp in #4282
- [codex] restore Sidebar V2 project actions by @juliusmarminge in #4373
- [codex] Group projects in new-thread pickers by @juliusmarminge in #4312
- fix(web): restore dark composer toolbar styling by @maria-rcks in #4375
- Fix thread tooltip folder icon color by @maria-rcks in #4383
- fix(server): parse CLI version in update preflight by @t3dotgg in #4389
- fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in #4274
- Fix logical project grouping labels on mobile by @juliusmarminge in #4391
- Add preview color scheme controls and simplify project grouping by @juliusmarminge in #4385
- fix(cli): publish nightly branded favicons by @maria-rcks in #4372
- Fix thread loading flash by @t3dotgg in #4396
- fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in #4309
- Fix composer context strip alignment and glass shell by @juliusmarminge in #4404
- Polish iOS git progress overlay with glass effects by @juliusmarminge in #4387
- Improve composer glass fallbacks by @juliusmarminge in #4406
- feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in #4409
- Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in #4411
- fix: tone down branch-mismatch banner by @t3dotgg in #4416
- fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in #4414
- fix(web): keep settled threads reachable when opened directly by @t3dotgg in #4413
- feat(sidebar-v2): thread snoozing by @t3dotgg in #4311
- Upgrade Clerk packages and Expo integration by @juliusmarminge in #4440
- Increase light-mode contrast for user message bubbles by @juliusmarminge in #4441
- Restore model picker layout and retain iterative test state by @juliusmarminge in #4450
- Color settled PR labels on hover by @juliusmarminge in #4451
- [codex] Fix glass hover compositing artifacts by @juliusmarminge in #4446
- Add Claude Opus 5 model by @thomaslittle in #4472
- feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in #4475
- feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in #4488
- feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in #4555
- feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in #4556
- fix(dev): skip browser-blocked ports by @t3dotgg in #4608
- fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in #4622
- perf(mobile): defer work-log detail serialization by @saphid in #4607
- test: account for lazy thread feed details by @t3dotgg in #4628
- feat(relay): limit managed tunnels per user by @juliusmarminge in #4530
- Add managed tunnel limits migration by @juliusmarminge in #4635
- Add background preview capture and picture-in-picture support by @juliusmarminge in #4397
- feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in #4453
- [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in #4643
- feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in #4638
- fix(web): scope PR state to the thread branch by @juliusmarminge in #4460
- Drop redundant Relay user indexes by @juliusmarminge in #4648
- feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in #4531
- Fix Relay Worker RuntimeContext wiring by @juliusmarminge in #4653
- Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in #4655
- fix(web): constrain branch toolbar context by @maxktz in #4657
- Keep MCP credentials alive across provider turns by @juliusmarminge in #4659
- fix: close actions dropdown when editing by @0x4bs3nt in #4660
- fix(preview): stabilize PiP viewport identity by @juliusmarminge in #4661
- Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in #4665
- Use tarball archiving for hosted web deploys by @juliusmarminge in #4669
- fix(server): bound editor discovery during config loading by @maria-rcks in #4291
- Prevent draft thread detail polling before shell registration by @juliusmarminge in #4670
- feat: add configurable source control writing settings by @maria-rcks in #4204
- feat(diff-panel): show total line additions and deletions by @0x4bs3nt in #4674
- Clear provider update actions while updating by @juliusmarminge in #4676
- Fix sidebar highlighting for draft threads by @juliusmarminge in #4679
- Use glass surfaces for web toasts by @juliusmarminge in #4681
- Show origin ref in branch trigger label by @juliusmarminge in #4680
- fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in #4675
New Contributors
- @avocardow made their first contribution in #3790
- @Prgm-code made their first contribution in #3816
- @jakeleventhal made their first contribution in #3899
- @VedankPurohit made their first contribution in #3644
- @kridaydave made their first contribution in #3990
- @dmstoykov made their first contribution in #4017
- @HugoVizcainoSantana made their first contribution in #3832
- @EricTsai83 made their first contribution in #3998
- @AmoonPod made their first contribution in #4088
- @BunnyGamezsc made their first contribution in #4094
- @olivoil made their first contribution in #4044
- @Fazalkadivar21 made their first contribution in #3877
- @maxwellyoung made their first contribution in #3932
- @nateEc made their first contribution in #4097
- @leorivastech made their first contribution in #3108
- @xxashxx-svg made their first contribution in #3867
- @yordis made their first contribution in #4055
- @Chrrxs made their first contribution in #4006
- @Aditya190803 made their first contribution in #3484
- @zepi2509 made their first contribution in #4084
- @eeinarsson made their first contribution in #4137
- @keeperxy made their first contribution in #3842
- @carlosricojr made their first contribution in #3889
- @Bortlesboat made their first contribution in #3921
- @PieterVanZyl-Dev made their first contribution in #3931
- @McMelonTV made their first contribution in #3933
- @tris203 made their first contribution in #3720
- @theduke made their first contribution in #3895
- @shoaib050326 made their first contribution in #2456
- @vdmkotai made their first contribution in #3617
- @Rhiz3K made their first contribution in #3996
- @anirudhsama made their first contribution in #3851
- @RusiruSadathana made their first contribution in #4177
- @jbbottoms made their first contribution in #4015
- @mfazekas made their first contribution in #4117
- @caezium made their first contribution in #4161
- @Wraient made their first contribution in #3949
- @thomaslittle made their first contribution in #4472
- @0x4bs3nt made their first contribution in #4475
- @saphid made their first contribution in #4607
- @maxktz made their first contribution in #4657
- @KrzysztofMoch made their first contribution in #4675
Full Changelog: v0.0.28...v0.0.29
What's Changed
- Add middle-click close for right panel tabs by @huxcrux in #3161
- fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in #3588
- Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in #3620
- Restore the ultrathink frame border effect by @juliusmarminge in #3625
- fix(dev): Fix electron dev launch and add test by @t3dotgg in #3662
- Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in #3514
- fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in #3667
- Make the thread composer read as elevated liquid glass by @juliusmarminge in #3668
- Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in #3679
- Surface pending tasks in mobile home and draft flow by @juliusmarminge in #3670
- fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in #3687
- Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in #3683
- Load thread snapshots over HTTP before live sync by @juliusmarminge in #3719
- Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in #3684
- Improve live activity routing and diagnostics by @juliusmarminge in #3685
- Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in #3759
- Use variant-specific splash icons in mobile app by @juliusmarminge in #3762
- Fix Expo widget asset wiring order by @juliusmarminge in #3763
- Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in #3761
- Clear VCS presentation state on finish by @juliusmarminge in #3764
- Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in #3768
- Add T3 Connect onboarding for mobile and web by @juliusmarminge in #3765
- Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in #3776
- Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in #3772
- Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in #3755
- Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in #3777
- Use rounded depth logo for production splash screen by @juliusmarminge in #3780
- fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in #3781
- Upgrade Clerk toolchain to latest versions by @juliusmarminge in #3785
- fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in #3790
- Fix desktop native optional dependency packaging by @Prgm-code in #3816
- [codex] Upgrade Clerk stack by @juliusmarminge in #3821
- [codex] Preserve worktree metadata during branch sync by @juliusmarminge in #3822
- feat(client): persist offline environment data and mobile preferences by @juliusmarminge in #3795
- [codex] Label max and ultra reasoning by @juliusmarminge in #3824
- fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in #3823
- Show compact PR number badges in mobile thread rows by @juliusmarminge in #3827
- Expose mobile PR indicator labels to accessibility by @juliusmarminge in #3828
- Fix truncated chat error alert layout by @jakeleventhal in #3899
- fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in #3644
- [codex] Add Android mobile support by @juliusmarminge in #3579
- Use client-side fallbacks for missing project favicons by @juliusmarminge in #3959
- Skip stale working-task notifications by @juliusmarminge in #3961
- Prepare Android beta branding and review diff UI by @juliusmarminge in #3967
- perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in #3978
- fix(docs): correct CI task-runner commands in ci.md by @kridaydave in #3990
- fix(docs): repair broken source links in architecture overview by @kridaydave in #3991
- fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in #3992
- docs: Add T3 Code Legal Docs by @juliusmarminge in #3972
- Fix Legal modal header crash by @juliusmarminge in #4000
- [codex] Fix onboarding connection status by @juliusmarminge in #4001
- Isolate native diff highlight grammar state by @juliusmarminge in #4029
- Fix macOS fullscreen titlebar spacing by @D3OXY in #4019
- Prevent duplicate project workspace roots by @juliusmarminge in #3829
- Normalize over-indented markdown list items by @juliusmarminge in #4020
- Resolve localhost preview URLs for remote environments by @juliusmarminge in #4011
- fix(mobile): Send composer images in upload wire format by @juliusmarminge in #4035
- Fix iOS terminal Enter input encoding by @juliusmarminge in #4043
- Add native mobile share target support by @juliusmarminge in #4021
- [codex] Expand real-route app store screenshot harness by @juliusmarminge in #4014
- fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in #4017
- Fix dropped events during initial thread snapshot by @D3OXY in #4079
- feat: show nightly update changelog tooltip by @HugoVizcainoSantana in #3832
- fix(git): treat selected commit paths literally by @EricTsai83 in #3998
- fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in #4077
- Refresh app icons across release variants by @juliusmarminge in #4080
- Update marketing GitHub star count by @AmoonPod in #4088
- fix(marketing): correct Cursor icon color by @AmoonPod in #4090
- Normalize protocol-relative remote host input as https by @kridaydave in #3971
- fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in #4094
- Fix documented task-runner commands (bun run -> vp) by @kridaydave in #3965
- Allow preview panel to grow on wide displays by @olivoil in #4044
- fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in #3877
- Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in #3969
- fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in #3952
- Remove unused code parameter from describePreviewError by @kridaydave in #3970
- [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in #3932
- fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in #4097
- [codex] fix mobile composer Enter behavior by @maxwellyoung in #3930
- feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in #3948
- fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in #2757
- fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in #3108
- fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in #2124
- [codex] fix: guard invalid web timestamps by @StiensWout in #3515
- [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in #3521
- [codex] Fix provider update checks restore defaults by @StiensWout in #3531
- fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in #3951
- Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in #4104
- Preserve T3 Code identity in macOS development launcher by @juliusmarminge in #4102
- fix(web): increase contrast of question option descriptions by @xxashxx-svg in #3867
- feat: draft hero landing on the index route by @yordis in #4055
- feat: file explorer mention actions and zoom-aware context menus by @yordis in #4054
- fix(mobile): restore iOS home screen branding by @PixPMusic in #4025
- perf(client): defer active thread cache writes by @Chrrxs in #4006
- Default diffs to working changes by @jakeleventhal in #3974
- Add Grok to marketing site provider list by @Aditya190803 in #3484
- Fix reopening existing Diff tab by @jakeleventhal in #3973
- Fix sending messages during active turns by @jakeleventhal in #3919
- [codex] Route OpenCode missing-session errors through Effect by @StiensWout in #3608
- [fix/feat:ui] Show default option badge by @sandersonstabo in #3232
- [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in #3225
- fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in #2508
- Allow failed remote environments to be removed by @zepi2509 in #4084
- [codex] canonicalize client timestamps by @maxwellyoung in #4112
- [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in #3234
- fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in #3621
- Refresh splash screen and favicon branding by @juliusmarminge in #4120
- Add terminal selection copy action by @tarik02 in #2904
- Add isolated app testing workflow by @juliusmarminge in #4121
- feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in #4130
- feat: add headless
t3 connectsetup for SSH hosts by @t3dotgg in #3749 - Refine T3 Connect authorization surfaces by @juliusmarminge in #4159
- fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in #4132
- fix(shared): delete unused agentAwareness phase predicates by @kridaydave in #4134
- fix(mobile): Stabilize native stack option updates by @juliusmarminge in #4037
- Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in #4162
- fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in #4166
- Fix draft banner stack overlap by @juliusmarminge in #4164
- Add portable mobile app testing guidance by @juliusmarminge in #4165
- fix(client): use lightweight connection probe by @eeinarsson in #4137
- fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in #3740
- Fix project action preview settings persistence by @keeperxy in #3842
- fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in #3889
- fix(web): handle sidebar shortcut before editors by @Bortlesboat in #3921
- fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in #3931
- Fix incorrect pluralization of “entry” by @McMelonTV in #3933
- feat(server): title background-task work-log rows with the task name by @t3dotgg in #3751
- fix: delegate OpenCode session titles to provider by @tris203 in #3720
- Archive selected threads from the context menu by @theduke in #3895
- fix(cli): support force removing projects by @Bortlesboat in #3922
- fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in #2456
- fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in #2093
- Add Codex launch arguments setting by @jamesx0416 in #2892
- [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in #3159
- Regenerate Codex reset credit protocol bindings by @juliusmarminge in #4173
- fix(preview): preserve direct localhost navigation by @Chrrxs in #3939
- Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in #4163
- Gate iOS glass layout on native support by @juliusmarminge in #4032
- fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in #3617
- fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in #4153
- fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in #3869
- [codex] show complete approval details by @maxwellyoung in #4111
- fix(web): paint text selection over composer chips by @yordis in #4139
- [codex] preserve custom model slugs by @maxwellyoung in #4168
- fix(web): preview workspace images in the file panel by @Rhiz3K in #3996
- feat(web): drag files from the explorer into the chat composer by @yordis in #4140
- fix(desktop): preserve main window bounds by @anirudhsama in #3851
- perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in #4177
- Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in #4113
- Pass CLI OAuth config to hosted web deploy by @juliusmarminge in #4186
- fix(web): always show environment chip for remote projects by @t3dotgg in #4217
- fix(web): keep composer editable while disconnected by @t3dotgg in #4241
- fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in #4240
- fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in #4244
- Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in #4026
- fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in #3100
- fix(claude): isolate capability probe from user MCP servers by @jbbottoms in #4015
- Preserve connecting status while a turn starts by @D3OXY in #4101
- fix(server): stop restoring stale OpenCode models by @nateEc in #4095
- [codex] keep scoped package references as text by @maxwellyoung in #4167
- fix(web): default provider selection for users without Codex by @mfazekas in #4117
- Unify temporary worktree branch naming by @juliusmarminge in #4278
- fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in #4279
- Stabilize sidebar settling animations by @juliusmarminge in #4280
- Restore Copy Link in chat link context menu by @caezium in #4161
- fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in #4213
- Preserve draft thread highlighting during promotion by @juliusmarminge in #4283
- Move mobile working timer into the thread timeline by @juliusmarminge in #4285
- Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in #4281
- fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in #4269
- fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in #4289
- feat(web): copy branch name via right-click in the branch selector by @t3dotgg in #4275
- Add remote server updates and standalone service management by @juliusmarminge in #4286
- Refine light-mode sidebar surfaces by @juliusmarminge in #4268
- fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in #3949
- improve and prevent silent thread branch drift and PR fetching by @justsomelegs in #2284
- Refresh web application surfaces and dark-mode dialogs by @maria-rcks in #4319
- fix(web): new-thread defaults ignored for remote environments by @t3dotgg in #4276
- feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in #4272
- Add shared t3.json project configuration support by @juliusmarminge in #4317
- Unify dialog glass and fix composer overlays by @juliusmarminge in #4365
- fix(web): warn before silent Windows updates by @nateEc in #4350
- [codex] Move project grouping to General settings by @juliusmarminge in #4313
- [codex] Group project scopes in mobile thread lists by @juliusmarminge in #4314
- [codex] Move mobile project grouping to General settings by @juliusmarminge in #4315
- [codex] Deduplicate connection failure messaging by @juliusmarminge in #4367
- Restore grouped project filtering in Sidebar V2 by @shivamhwp in #4282
- [codex] restore Sidebar V2 project actions by @juliusmarminge in #4373
- [codex] Group projects in new-thread pickers by @juliusmarminge in #4312
- fix(web): restore dark composer toolbar styling by @maria-rcks in #4375
- Fix thread tooltip folder icon color by @maria-rcks in #4383
- fix(server): parse CLI version in update preflight by @t3dotgg in #4389
- fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in #4274
- Fix logical project grouping labels on mobile by @juliusmarminge in #4391
- Add preview color scheme controls and simplify project grouping by @juliusmarminge in #4385
- fix(cli): publish nightly branded favicons by @maria-rcks in #4372
- Fix thread loading flash by @t3dotgg in #4396
- fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in #4309
- Fix composer context strip alignment and glass shell by @juliusmarminge in #4404
- Polish iOS git progress overlay with glass effects by @juliusmarminge in #4387
- Improve composer glass fallbacks by @juliusmarminge in #4406
- feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in #4409
- Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in #4411
- fix: tone down branch-mismatch banner by @t3dotgg in #4416
- fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in #4414
- fix(web): keep settled threads reachable when opened directly by @t3dotgg in #4413
- feat(sidebar-v2): thread snoozing by @t3dotgg in #4311
- Upgrade Clerk packages and Expo integration by @juliusmarminge in #4440
- Increase light-mode contrast for user message bubbles by @juliusmarminge in #4441
- Restore model picker layout and retain iterative test state by @juliusmarminge in #4450
- Color settled PR labels on hover by @juliusmarminge in #4451
- [codex] Fix glass hover compositing artifacts by @juliusmarminge in #4446
- Add Claude Opus 5 model by @thomaslittle in #4472
- feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in #4475
- feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in #4488
- feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in #4555
- feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in #4556
- fix(dev): skip browser-blocked ports by @t3dotgg in #4608
- fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in #4622
- perf(mobile): defer work-log detail serialization by @saphid in #4607
- test: account for lazy thread feed details by @t3dotgg in #4628
- feat(relay): limit managed tunnels per user by @juliusmarminge in #4530
- Add managed tunnel limits migration by @juliusmarminge in #4635
- Add background preview capture and picture-in-picture support by @juliusmarminge in #4397
- feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in #4453
- [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in #4643
- feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in #4638
- fix(web): scope PR state to the thread branch by @juliusmarminge in #4460
- Drop redundant Relay user indexes by @juliusmarminge in #4648
- feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in #4531
- Fix Relay Worker RuntimeContext wiring by @juliusmarminge in #4653
- Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in #4655
- fix(web): constrain branch toolbar context by @maxktz in #4657
- Keep MCP credentials alive across provider turns by @juliusmarminge in #4659
- fix: close actions dropdown when editing by @0x4bs3nt in #4660
- fix(preview): stabilize PiP viewport identity by @juliusmarminge in #4661
- Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in #4665
- Use tarball archiving for hosted web deploys by @juliusmarminge in #4669
- fix(server): bound editor discovery during config loading by @maria-rcks in #4291
- Prevent draft thread detail polling before shell registration by @juliusmarminge in #4670
- feat: add configurable source control writing settings by @maria-rcks in #4204
- feat(diff-panel): show total line additions and deletions by @0x4bs3nt in #4674
- Clear provider update actions while updating by @juliusmarminge in #4676
- Fix sidebar highlighting for draft threads by @juliusmarminge in #4679
- Use glass surfaces for web toasts by @juliusmarminge in #4681
- Show origin ref in branch trigger label by @juliusmarminge in #4680
- fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in #4675
New Contributors
- @avocardow made their first contribution in #3790
- @Prgm-code made their first contribution in #3816
- @jakeleventhal made their first contribution in #3899
- @VedankPurohit made their first contribution in #3644
- @kridaydave made their first contribution in #3990
- @dmstoykov made their first contribution in #4017
- @HugoVizcainoSantana made their first contribution in #3832
- @EricTsai83 made their first contribution in #3998
- @AmoonPod made their first contribution in #4088
- @BunnyGamezsc made their first contribution in #4094
- @olivoil made their first contribution in #4044
- @Fazalkadivar21 made their first contribution in #3877
- @maxwellyoung made their first contribution in #3932
- @nateEc made their first contribution in #4097
- @leorivastech made their first contribution in #3108
- @xxashxx-svg made their first contribution in #3867
- @yordis made their first contribution in #4055
- @Chrrxs made their first contribution in #4006
- @Aditya190803 made their first contribution in #3484
- @zepi2509 made their first contribution in #4084
- @eeinarsson made their first contribution in #4137
- @keeperxy made their first contribution in #3842
- @carlosricojr made their first contribution in #3889
- @Bortlesboat made their first contribution in #3921
- @PieterVanZyl-Dev made their first contribution in #3931
- @McMelonTV made their first contribution in #3933
- @tris203 made their first contribution in #3720
- @theduke made their first contribution in #3895
- @shoaib050326 made their first contribution in #2456
- @vdmkotai made their first contribution in #3617
- @Rhiz3K made their first contribution in #3996
- @anirudhsama made their first contribution in #3851
- @RusiruSadathana made their first contribution in #4177
- @jbbottoms made their first contribution in #4015
- @mfazekas made their first contribution in #4117
- @caezium made their first contribution in #4161
- @Wraient made their first contribution in #3949
- @thomaslittle made their first contribution in #4472
- @0x4bs3nt made their first contribution in #4475
- @saphid made their first contribution in #4607
- @maxktz made their first contribution in #4657
- @KrzysztofMoch made their first contribution in #4675
Full Changelog: v0.0.28...v0.0.29