Skip to content

fix(web): keep settled threads reachable when opened directly - #4413

Merged
t3dotgg merged 8 commits into
mainfrom
sidebar-v2-settled-thread-affordances
Jul 24, 2026
Merged

fix(web): keep settled threads reachable when opened directly#4413
t3dotgg merged 8 commits into
mainfrom
sidebar-v2-settled-thread-affordances

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Jul 24, 2026

Copy link
Copy Markdown
Member

Problem

Opening an old (settled) thread via search left you stuck:

  • The thread's row sits below the "Show more" cutoff in the sidebar's settled tail, so there's no visible highlight and no reachable un-settle affordance.
  • There was no indication in the thread view that the thread is settled, and no way to un-settle it without sending a message.
image

Changes

SidebarV2 — force-reveal the open thread. When the route thread is settled and falls below the settled-tail paging cutoff, its row is appended to the bottom of the visible settled section (just above "Show more"). The active highlight and the hover un-settle action are therefore always reachable; the hidden count adjusts to match. No change when the thread is already visible or active.

ChatView — settled banner above the composer. When the open thread is settled, a banner in the existing ComposerBannerStack shows "This thread is settled — sending a message moves it back to Active in the sidebar" with an Un-settle button. The button issues the same thread.unsettle command (reason: "user") the sidebar uses, so it pins the thread active against auto-settle; failures surface as an error toast.

Settled state is resolved with the exact same inputs as the sidebar partition (effectiveSettled, sidebarAutoSettleAfterDays, the threadSettlement capability gate, and PR state), so the banner and sidebar row can't disagree. Server threads only — never drafts.

Verification

  • bun run typecheck — clean
  • bun run lint — clean for touched files
  • apps/web unit tests — 1465 passed

🤖 Generated with Claude Code


Note

Low Risk
UI-only behavior around settled-thread visibility and un-settle; reuses existing settlement APIs and mirrors sidebar logic to avoid state mismatch.

Overview
Fixes the case where opening a settled thread via search or deep link left no sidebar highlight and no way to un-settle without sending a message.

Sidebar: If the routed thread is settled but past the settled-tail “Show more” cutoff, its row is appended to the visible settled list so selection and hover un-settle stay reachable; the hidden count is derived from what is actually shown.

Chat: When the open server thread is settled (same effectiveSettled inputs as the sidebar—shell, sidebarAutoSettleAfterDays, settlement capability, PR state), an info banner in ComposerBannerStack explains settled state and offers Un-settle via threadEnvironment.unsettle (reason: "user"), with per-thread pending state and error toasts. Banner ordering keeps system/branch notices above the settled banner.

Shared clock: New useNowMinute hook replaces Sidebar’s local minute interval so sidebar and chat share one UTC-aligned minute timer for auto-settle timing.

Reviewed by Cursor Bugbot for commit 54b1618. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Keep settled threads visible in sidebar and show Un-settle banner in composer

  • When a settled thread is opened directly, SidebarV2 now always includes it in the visible settled section, even if it would otherwise be hidden behind "Show more".
  • ChatViewContent shows an informational banner in the composer when the active thread is settled, with an Un-settle button that calls threadEnvironment.unsettle and shows an error toast on failure.
  • A new shared useNowMinute hook provides a minute-quantized UTC timestamp via a single module-level timer, replacing a local interval in SidebarV2.

Macroscope summarized 54b1618.

Summary by CodeRabbit

  • New Features

    • Added settled-thread indicators and an Un-settle action for active threads.
    • Added an informational banner when a thread is settled, while preserving higher-priority warnings.
  • Bug Fixes

    • Active settled threads now remain visible in the sidebar, even when outside the current display limit.
    • Updated the sidebar’s hidden-thread count to accurately reflect visible routed threads.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title is concise and accurately summarizes the main fix: keeping settled threads reachable when opened directly.
Description check ✅ Passed The description covers the problem, what changed, why, a UI image, and verification, though it doesn't match the template headings exactly.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sidebar-v2-settled-thread-affordances

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jul 24, 2026
Comment thread apps/web/src/components/ChatView.tsx Outdated
Comment thread apps/web/src/components/ChatView.tsx Outdated
@macroscopeapp

macroscopeapp Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a self-contained UX bug fix ensuring settled threads remain reachable when opened directly. The changes refactor timer logic into a shared hook and add appropriate UI feedback. Limited scope with no security or infrastructure implications.

You can customize Macroscope's approvability policy. Learn more.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
apps/web/src/components/ChatView.tsx (1)

3828-3835: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicated minute-quantized clock polling — extract a shared hook. Both files implement the identical nowMinute state + 60s setInterval pattern, and the ChatView comment explicitly notes it must stay "on the same tick" as the sidebar's. Duplicating the logic risks the two copies drifting apart on a future edit.

  • apps/web/src/components/ChatView.tsx#L3828-L3835: replace with a shared useNowMinute() hook.
  • apps/web/src/components/SidebarV2.tsx#L793-L800: replace with the same shared useNowMinute() hook.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/web/src/components/ChatView.tsx` around lines 3828 - 3835, Extract the
duplicated minute-quantized clock polling into a shared useNowMinute() hook,
preserving the existing initial value, 60-second interval, and cleanup behavior.
Replace the local nowMinute state/effect in apps/web/src/components/ChatView.tsx
lines 3828-3835 and apps/web/src/components/SidebarV2.tsx lines 793-800 with the
shared hook, ensuring both components use the same implementation and tick
behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/web/src/components/ChatView.tsx`:
- Around line 3853-3875: Reset isUnsettling whenever the active thread changes,
matching the existing isRevertingCheckpoint reset pattern. Add an effect keyed
to the active thread identity near the isUnsettling state or
handleUnsettleActiveThread logic, so navigation clears the pending UI state for
the newly selected thread without changing the mutation behavior.

---

Nitpick comments:
In `@apps/web/src/components/ChatView.tsx`:
- Around line 3828-3835: Extract the duplicated minute-quantized clock polling
into a shared useNowMinute() hook, preserving the existing initial value,
60-second interval, and cleanup behavior. Replace the local nowMinute
state/effect in apps/web/src/components/ChatView.tsx lines 3828-3835 and
apps/web/src/components/SidebarV2.tsx lines 793-800 with the shared hook,
ensuring both components use the same implementation and tick behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: d35e22ed-b162-4ff0-9819-488fade13187

📥 Commits

Reviewing files that changed from the base of the PR and between 67a7b1a and 8eb4efe.

📒 Files selected for processing (2)
  • apps/web/src/components/ChatView.tsx
  • apps/web/src/components/SidebarV2.tsx

Comment thread apps/web/src/components/ChatView.tsx Outdated
t3dotgg and others added 3 commits July 23, 2026 18:25
Opening an old thread via search left it invisible in the sidebar
(below "Show more") with no way to un-settle it short of sending a
message. Two changes:

- SidebarV2: the route thread is force-revealed in the settled tail
  when it falls below the paging cutoff, so the active row and its
  un-settle affordance are always visible.
- ChatView: a composer banner on settled threads states the settled
  state, explains that replying re-activates the thread, and offers
  an explicit Un-settle action (thread.unsettle, reason "user").

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Drive the settled computation off a minute-quantized clock (same
  tick pattern as the sidebar partition) so inactivity auto-settle
  updates as time passes instead of freezing at mount.
- Order the settled info banner last in the composer stack so the
  branch-mismatch warning and its repair actions stay front-most.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Reset isUnsettling when the active thread changes so a mid-flight
  un-settle on thread A never renders thread B's banner as pending
  (mirrors the isRevertingCheckpoint reset pattern).
- Extract the duplicated minute-quantized clock into useNowMinute,
  shared by the sidebar partition and the composer banner.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Comment thread apps/web/src/hooks/useNowMinute.ts Outdated
@t3dotgg
t3dotgg force-pushed the sidebar-v2-settled-thread-affordances branch from 2e7b0cf to 671013e Compare July 24, 2026 01:26
A mount-time-offset interval let two consumers hold different minute
values for up to a minute after a boundary crossing, so the sidebar
partition and composer banner could briefly disagree on settled state.
Tick on UTC minute boundaries instead so all consumers cross together.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Comment thread apps/web/src/components/ChatView.tsx
Comment thread apps/web/src/components/ChatView.tsx
t3dotgg and others added 2 commits July 23, 2026 18:40
A boolean isUnsettling raced across navigation: un-settling thread A,
navigating to settled thread B, and un-settling B let A's finally
clear B's pending state mid-flight. Track the un-settling thread's
key instead — the banner derives its pending state per thread, and a
resolving request can only clear its own key.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…read-affordances

# Conflicts:
#	apps/web/src/components/ChatView.tsx
Comment thread apps/web/src/hooks/useNowMinute.ts
Comment thread apps/web/src/hooks/useNowMinute.ts Outdated
Per-instance state and timers meant two consumers could still hold
different minute values (remount timing, throttled background timers)
despite boundary alignment. A single module-level clock behind
useSyncExternalStore gives every consumer the same value by
construction; ticks re-read the clock so late timers self-correct,
and the timer stops when the last subscriber leaves.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit bd0b8cb. Configure here.

Comment thread apps/web/src/hooks/useNowMinute.ts
After the last consumer unmounted, the module-level minute froze and a
remount's first render served the stale value (subscribe refreshed it
without notifying React). getSnapshot now re-reads the clock whenever
no timer is running, so a fresh mount renders the current minute; while
subscribed, the cached snapshot stays stable as React requires.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@t3dotgg
t3dotgg merged commit bb38c33 into main Jul 24, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the sidebar-v2-settled-thread-affordances branch July 24, 2026 02:18
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…tgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Jul 25, 2026
…4309pingdotgg#4488) (#187)

* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR (pingdotgg#4309)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 193e3c6)

* Fix composer context strip alignment and glass shell (pingdotgg#4404)

(cherry picked from commit 6ef7aa8)

* Polish iOS git progress overlay with glass effects (pingdotgg#4387)

(cherry picked from commit ce467da)

* Improve composer glass fallbacks (pingdotgg#4406)

Co-authored-by: codex <codex@users.noreply.github.com>
(cherry picked from commit 67a7b1a)

* feat(web): collapse large git diffs by default to make chat more readable (pingdotgg#4409)

(cherry picked from commit 51672b6)

* Stop new threads inheriting checkout/branch from viewed thread (pingdotgg#4411)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 2f41c07)

* fix: tone down branch-mismatch banner (pingdotgg#4416)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit fc3f78f)

* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 6b9a598)

* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit bb38c33)

* feat(sidebar-v2): thread snoozing (pingdotgg#4311)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
(cherry picked from commit 202e560)

* Upgrade Clerk packages and Expo integration (pingdotgg#4440)

(cherry picked from commit 5d17354)

Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com>

* Increase light-mode contrast for user message bubbles (pingdotgg#4441)

(cherry picked from commit 15e875a)

* Restore model picker layout and retain iterative test state (pingdotgg#4450)

Co-authored-by: codex <codex@users.noreply.github.com>
(cherry picked from commit f7cc776)

* Color settled PR labels on hover (pingdotgg#4451)

Co-authored-by: codex <codex@users.noreply.github.com>
(cherry picked from commit a7ee309)

* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)

Co-authored-by: codex <codex@users.noreply.github.com>
(cherry picked from commit ece0508)

* Add Claude Opus 5 model (pingdotgg#4472)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
(cherry picked from commit 41a430a)

* feat(web): add collapse-all toggle to diff panel (pingdotgg#4475)

(cherry picked from commit 38cfc25)

* feat(web): show fast mode as a bolt instead of a "Normal" label (pingdotgg#4488)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 5719e8a)

* fix(sync): preserve Droid medium-access with Auto runtime mode

Keep fork-only medium-access in RuntimeMode alongside upstream Auto.
Update presentation maps and drop obsolete provider kind from slug helper.

Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com>

* fix(sync): restore fork release and runtime-mode adaptations

Keep WSL node-pty on bullseye glibc, pin releases to the fork, and stop
hard-requiring upstream relay/npm publish. Scope Auto vs Medium access by
provider, normalize carried modes on new threads, and fix Claude/Droid
type regressions from the restack.

Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com>

* fix(sync): refresh lockfile after Clerk upgrade restack

Align patchedDependencies hashes (react-native-screens) and importer
entries with the current workspace patches so frozen CI installs succeed.

Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com>

---------

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

## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675

**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29

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

## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant