Skip to content

feat(mobile): add thread snoozing - #5053

Merged
gabrielelpidio merged 5 commits into
mainfrom
t3code/add-mobile-thread-snoozing
Jul 31, 2026
Merged

gabrielelpidio merged 5 commits into
mainfrom
t3code/add-mobile-thread-snoozing

Conversation

@gabrielelpidio

@gabrielelpidio gabrielelpidio commented Jul 30, 2026 •

Copy link
Copy Markdown
Contributor

What Changed

  • Added mobile thread snoozing and unsnoozing through swipe and long-press controls.
  • Moved snooze preset resolution into shared client runtime code so mobile and desktop always offer the same choices: In 1 hour, This evening when applicable, Tomorrow, and Next week.
  • Added a collapsible snoozed-thread shelf with wake-time labels and an explicit Wake reverse action.
  • Added capability/state handling, adaptive swipe actions, and focused preset/list tests.

Why

Mobile users can now temporarily remove inactive threads from the main list without archiving or deleting them, while retaining an easy way to review and restore snoozed threads. Using one shared preset resolver prevents the mobile and desktop options—or their calculated wake times—from drifting apart.

UI Changes

Fresh captures from an iPhone 17 Pro simulator running iOS 26.5 and a Pixel 10 Android emulator, both against an isolated local environment. These were captured after 6 PM, so This evening is correctly omitted; desktop and mobile both show it only while more than one hour remains before 6 PM.

Platform Long press Snooze presets Snoozed shelf and Wake
iOS iOS thread long-press menu with Settle, Snooze submenu, and Delete actions iOS long-press Snooze submenu with the shared desktop presets iOS expanded Snoozed shelf with wake countdown and Wake control
Android Android thread long-press menu with Settle, Snooze submenu, and Delete actions Android swipe controls with the shared desktop Snooze preset picker open Android expanded Snoozed shelf with wake countdown and Wake control

Verified in the mobile app:

  • swipe Snooze and the long-press Snooze submenu open the same shared preset list as desktop
  • selecting a preset dispatches its calculated absolute wake time, including local-calendar handling for tomorrow and next week
  • snoozed threads move into the collapsible Snoozed shelf with a wake countdown
  • snoozed thread rows expose the reverse Wake action on both iOS and Android
  • capability and thread-state guards prevent unsupported or stale snooze actions

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add thread snoozing to mobile thread list with swipe actions and snoozed shelf

  • Adds snooze and unsnooze actions to the mobile thread list via swipe gestures, long-press context menus, and a collapsible 'Snoozed' shelf header in both the home screen and sidebar.
  • Introduces snoozeThread and unsnoozeThread in useThreadListActions with capability checks, canSnooze validation, in-flight deduplication, haptic feedback, and error alerts.
  • Adds snooze preset resolution (hour, evening, tomorrow, next-week) and a compact wake-time label formatter (snoozeWakeLabel) to the shared threadSettled module; moves existing web implementations to use these shared exports.
  • Extends the thread list V2 layout model to track snoozed threads as a separate shelf, computing sort order, shelf header insertion index, and per-row wake labels for efficient recycled-list equality checks.
  • Refactors thread-swipe-actions to support a configurable optional secondary swipe action with contextual menus; swipe widths and full-swipe behavior adapt dynamically based on whether a secondary action is present.

Macroscope summarized 448bbbc.


Note

Medium Risk
New list partitioning, swipe gestures, and server snooze/unsnooze commands touch core thread-list UX; capability and canSnooze gating limit impact on unsupported servers and blocked threads.

Overview
Adds thread snooze and wake on mobile Thread List v2: swipe and long-press expose preset-based snooze (shared with desktop), and snoozed threads move into a collapsible Snoozed shelf with wake countdown labels and a Wake action.

resolveSnoozePresets and snoozeWakeLabel now live in client-runtime (threadSettled.ts); web re-exports them so preset math and countdown text stay aligned across clients.

List partitioning builds active → pending → snoozed shelf → settled, keeps the selected snoozed thread visible when the shelf is collapsed (split view), and uses second-precise wake timers so threads reappear without waiting on the minute tick. useThreadListActions adds snoozeThread / unsnoozeThread with capability checks, canSnooze guards, and in-flight deduplication.

ThreadSwipeable supports an optional configurable secondary action (snooze preset menu) and secondaryAction: null so gated snooze rows do not fall back to Delete. Dedicated “all threads snoozed” empty states are removed because the shelf header remains a list row when collapsed.

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

- Add snooze and wake actions to mobile thread lists
- Add collapsible snoozed-thread shelf with wake times
@coderabbitai

coderabbitai Bot commented Jul 30, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 447dc949-9880-410c-b947-7db85e9b9880

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions github-actions Bot added vouch:trusted Author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jul 30, 2026
@macroscopeapp

macroscopeapp Bot commented Jul 30, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a complete new feature (thread snoozing) with new UI components, swipe actions, menu systems, and state management across mobile surfaces. New features with this scope of user-facing behavior changes warrant human review.

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

@github-actions github-actions Bot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jul 31, 2026

@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 feab8cd. Configure here.

@gabrielelpidio
gabrielelpidio merged commit a041981 into main Jul 31, 2026
17 checks passed
@gabrielelpidio
gabrielelpidio deleted the t3code/add-mobile-thread-snoozing branch July 31, 2026 14:22
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 1, 2026
* Fix incorrect pluralization of “entry” (pingdotgg#3933)

* feat(server): title background-task work-log rows with the task name (pingdotgg#3751)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: delegate OpenCode session titles to provider (pingdotgg#3720)

* Archive selected threads from the context menu (pingdotgg#3895)

* fix(cli): support force removing projects (pingdotgg#3922)

* fix: allow sidebar to be shrunk when wider than viewport (pingdotgg#2456)

Co-authored-by: Shoaib Ansari <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* fix(codex): show web search query and url in tool call details (pingdotgg#2093)

Co-authored-by: Julius Marminge <[email protected]>

* Add Codex launch arguments setting (pingdotgg#2892)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: root <[email protected]>

* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)

Co-authored-by: Julius Marminge <[email protected]>

* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)

Co-authored-by: codex <[email protected]>

* fix(preview): preserve direct localhost navigation (pingdotgg#3939)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)

Co-authored-by: codex <[email protected]>

* Gate iOS glass layout on native support (pingdotgg#4032)

Co-authored-by: codex <[email protected]>

* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)

Co-authored-by: codex <[email protected]>

* fix(server): use CLI for OpenCode health check instead of spawning server (pingdotgg#4153)

* fix(web): scope timeline minimap hover target to the side gutter (pingdotgg#3869)

Co-authored-by: Claude Fable 5 <[email protected]>

* [codex] show complete approval details (pingdotgg#4111)

* fix(web): paint text selection over composer chips (pingdotgg#4139)

Signed-off-by: Yordis Prieto <[email protected]>

* [codex] preserve custom model slugs (pingdotgg#4168)

* fix(web): preview workspace images in the file panel (pingdotgg#3996)

Co-authored-by: Rhiz3K <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)

Co-authored-by: Julius Marminge <[email protected]>
Signed-off-by: Yordis Prieto <[email protected]>

* fix(desktop): preserve main window bounds (pingdotgg#3851)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)

Co-authored-by: codex <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)

Co-authored-by: Julius Marminge <[email protected]>

* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)

Co-authored-by: codex <[email protected]>

* fix(web): always show environment chip for remote projects (pingdotgg#4217)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): keep composer editable while disconnected (pingdotgg#4241)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)

Co-authored-by: Claude Fable 5 <[email protected]>

* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: maria-rcks <[email protected]>

* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)

Co-authored-by: codex <[email protected]>

* Preserve connecting status while a turn starts (pingdotgg#4101)

Co-authored-by: codex <[email protected]>

* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)

Co-authored-by: codex <[email protected]>

* [codex] keep scoped package references as text (pingdotgg#4167)

Co-authored-by: codex <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* fix(web): default provider selection for users without Codex (pingdotgg#4117)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* Unify temporary worktree branch naming (pingdotgg#4278)

* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 (pingdotgg#4279)

* Stabilize sidebar settling animations (pingdotgg#4280)

* Restore Copy Link in chat link context menu (pingdotgg#4161)

Co-authored-by: Julius Marminge <[email protected]>

* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog (pingdotgg#4213)

* Preserve draft thread highlighting during promotion (pingdotgg#4283)

Co-authored-by: codex <[email protected]>

* Move mobile working timer into the thread timeline (pingdotgg#4285)

* Stabilize PR status lookups and provider session lifecycle (pingdotgg#4281)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 (pingdotgg#4269)

* fix(server): don't drop sticky PR fallback when remote URL can't be resolved (pingdotgg#4289)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add remote server updates and standalone service management (pingdotgg#4286)

Co-authored-by: codex <[email protected]>

* Refine light-mode sidebar surfaces (pingdotgg#4268)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: codex <[email protected]>

* fix(mobile): don't mark Android VPN/Tailscale as offline when connected (pingdotgg#3949)

* improve and prevent silent thread branch drift and PR fetching (pingdotgg#2284)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* feat(web): refresh application surfaces

* style(web): polish dark mode dialogs

* fix(web): unify and tune glass surfaces

Co-authored-by: codex <[email protected]>

* fix(web): apply glass opacity to thread tooltip

* fix(web): override thread tooltip background

* fix(web): apply glass opacity to model picker

* style(web): polish glass opacity slider

* fix(web): apply glass opacity to command palette

* fix(web): add glass composer alerts

* fix(web): honor composer glass opacity

* test(web): stabilize timeline module setup

* style(web): fade settings content beneath navbar

* test(desktop): include glass opacity in settings fixture

* fix(web): address redesign review findings

* fix(web): sync provider banner dismissal

* fix(web): new-thread defaults ignored for remote environments (pingdotgg#4276)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add shared t3.json project configuration support (pingdotgg#4317)

* Restore light-mode surfaces and refine dialog styling

- Restore light-mode glass, dialog, dropdown, and composer colors
- Refine provider wizard, changed-file cards, sidebar controls, and buttons
- Update wizard step tests for the new list structure

* Unify dialog glass and fix composer overlays (pingdotgg#4365)

Co-authored-by: codex <[email protected]>

* fix(web): warn before silent Windows updates (pingdotgg#4350)

* [codex] Move project grouping to General settings (pingdotgg#4313)

Co-authored-by: codex <[email protected]>

* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)

Co-authored-by: codex <[email protected]>

* [codex] Move mobile project grouping to General settings (pingdotgg#4315)

Co-authored-by: codex <[email protected]>

* [codex] Deduplicate connection failure messaging (pingdotgg#4367)

Co-authored-by: codex <[email protected]>

* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* [codex] restore Sidebar V2 project actions (pingdotgg#4373)

Co-authored-by: codex <[email protected]>

* [codex] Group projects in new-thread pickers (pingdotgg#4312)

Co-authored-by: codex <[email protected]>

* fix(web): restore dark composer toolbar styling

* Fix thread tooltip folder icon color (pingdotgg#4383)

* fix(server): parse CLI version in update preflight (pingdotgg#4389)

* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort (pingdotgg#4274)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix logical project grouping labels on mobile (pingdotgg#4391)

Co-authored-by: codex <[email protected]>

* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)

Co-authored-by: codex <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>

* fix(cli): publish nightly branded favicons (pingdotgg#4372)

* Fix thread loading flash (pingdotgg#4396)

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

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

* Improve composer glass fallbacks (pingdotgg#4406)

Co-authored-by: codex <[email protected]>

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

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: maria <[email protected]>

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

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

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

Co-authored-by: codex <[email protected]>

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

Co-authored-by: codex <[email protected]>

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

Co-authored-by: codex <[email protected]>

* Add Claude Opus 5 model (pingdotgg#4472)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
Co-authored-by: Theo Browne <[email protected]>

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

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

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(dev): skip browser-blocked ports (pingdotgg#4608)

* fix: cut websocket throughput in half by pruning activity payloads (pingdotgg#4622)

* perf(mobile): defer work-log detail serialization (pingdotgg#4607)

* test: account for lazy thread feed details (pingdotgg#4628)

* feat(relay): limit managed tunnels per user (pingdotgg#4530)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add managed tunnel limits migration (pingdotgg#4635)

* Add background preview capture and picture-in-picture support (pingdotgg#4397)

Co-authored-by: codex <[email protected]>

* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)

Co-authored-by: Claude Fable 5 <[email protected]>

* Upgrade Effect and Alchemy betas (pingdotgg#4643)

Prepare Relay production infrastructure for the PlanetScale PS_20 HA topology, upgrade Effect and Alchemy to compatible betas, reconcile migration state, and preserve patched MCP session termination behavior.\n\nCo-authored-by: codex <[email protected]>

* feat: allow new thread creation through project breadcrumbs (pingdotgg#4638)

* fix(web): scope PR state to the thread branch (pingdotgg#4460)

Co-authored-by: codex <[email protected]>

* Drop redundant Relay user indexes (pingdotgg#4648)

Co-authored-by: codex <[email protected]>

* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)

Co-authored-by: codex <[email protected]>

* Fix live sidebar resize limits and defer Alchemy runtime context (pingdotgg#4655)

* fix(web): constrain branch toolbar context (pingdotgg#4657)

* Keep MCP credentials alive across provider turns (pingdotgg#4659)

* fix: close actions dropdown when editing (pingdotgg#4660)

* fix(preview): stabilize PiP viewport identity (pingdotgg#4661)

Co-authored-by: codex <[email protected]>

* Add glass styling for thread tooltips and simplify preview tab handling (pingdotgg#4665)

* Use tarball archiving for hosted web deploys (pingdotgg#4669)

* fix(server): bound editor discovery during config loading (pingdotgg#4291)

* Prevent draft thread detail polling before shell registration (pingdotgg#4670)

Co-authored-by: codex <[email protected]>

* feat: add configurable source control writing settings (pingdotgg#4204)

Co-authored-by: Claude <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* feat(diff-panel): show total line additions and deletions (pingdotgg#4674)

* Clear provider update actions while updating (pingdotgg#4676)

* Fix sidebar highlighting for draft threads (pingdotgg#4679)

* Use glass surfaces for web toasts (pingdotgg#4681)

* Show origin ref in branch trigger label (pingdotgg#4680)

Co-authored-by: codex <[email protected]>

* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) (pingdotgg#4675)

* chore(release): prepare v0.0.29

* Add OTA update checks to mobile settings (pingdotgg#4686)

* fix(mobile): threads load snapped to bottom on iOS (pingdotgg#4689)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): 33 web UI fixes (pingdotgg#4700)

* Make mobile Thread List v2 the default (pingdotgg#4717)

* Fix mobile showcase workflow without Clerk (pingdotgg#4718)

* Fix relay credential lookup for unlinked environments (pingdotgg#4692)

Co-authored-by: codex <[email protected]>

* Settle merged PR threads immediately (pingdotgg#4704)

* feat(web): add maria's sidebar header artwork toggle (pingdotgg#4652)

* feat(web): add appearance settings category (pingdotgg#4715)

* fix(desktop): allow updater-controlled relaunch (pingdotgg#4721)

* fix(web): prevent diff panel scroll jumping (pingdotgg#4724)

* Link inline code file paths in chat markdown (pingdotgg#4726)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)

Co-authored-by: Claude <[email protected]>

* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: overhaul agent guidance (pingdotgg#4782)

* Prevent sidebar row labels from truncating (pingdotgg#4789)

* perf(server): gzip large thread snapshots (pingdotgg#4788)

* fix(web): stashed prompts now survive switching providers (pingdotgg#4787)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Git ref refresh resource storms (pingdotgg#4727)

Co-authored-by: codex <[email protected]>

* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): defer command palette filesystem navigation (pingdotgg#2109)

Co-authored-by: codex <[email protected]>

* fix(release): skip scripts during Vercel installs (pingdotgg#4796)

* refactor(client): share filesystem browse navigation (pingdotgg#4797)

Co-authored-by: codex <[email protected]>

* fix(mobile): defer filesystem navigation (pingdotgg#4799)

Co-authored-by: codex <[email protected]>

* refactor(server): use native HTTP compression streams (pingdotgg#4798)

Co-authored-by: codex <[email protected]>

* Remove Connect waitlist and add GA announcement tooling (pingdotgg#4691)

* Fix Connect sign-in settings label (pingdotgg#4806)

* chore(release): prepare v0.0.30

* fix(desktop): restore T3 Connect sign-in (pingdotgg#4809)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>

* Simplify files panel header (pingdotgg#4828)

* build(desktop): reduce installed app size by ~300MB (pingdotgg#4824)

* Update model version from claude-opus-4-8 to claude-opus-5 (pingdotgg#4832)

* Preserve the thread shell while detail loads (pingdotgg#4830)

* Reduce idle work and disk churn with native resource diagnostics (pingdotgg#2679)

Co-authored-by: codex <[email protected]>

* fix(server): detect repositories after initialization (pingdotgg#4848)

* perf(server): merge separate staged/unstaged numstat calls into single diff HEAD --numstat (pingdotgg#4843)

* fix(git): disable external diff for review diff previews (pingdotgg#4854)

* Fix editable file focus and live syntax highlighting (pingdotgg#3979)

* fix(web): remember the rendered-markdown choice across threads (pingdotgg#4853)

Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Claude Opus 5 <[email protected]>

* chore(release): prepare v0.0.31

* fix(mobile): reduce thread feed scroll jank (pingdotgg#4874)

* fix(web): restore sidebar v2 thread actions and terminal icon (pingdotgg#4712)

* fix(web): settle button now works on hover, not just right-click (pingdotgg#4905)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(clients): disable add project while disconnected (pingdotgg#4834)

* fix(composer): hide default Codex service tier (pingdotgg#4784)

* docs: link iOS and Android app store downloads (pingdotgg#4902)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): align remote server update action (pingdotgg#4731)

* fix(connect): suggest a serve command that matches how you ran connect (pingdotgg#4897)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): stop shared content errors in Personal Team builds (pingdotgg#4943)

* perf(mobile): sends respond instantly, thread opens stop freezing (pingdotgg#4882)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show Codex fast mode as a bolt (pingdotgg#4947)

* docs: seed worktrees with a copy of real userdata instead of banning it (pingdotgg#4949)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): support dragged images in the composer (pingdotgg#4953)

* fix(mobile): stop long iOS threads from jumping while scrolling up (pingdotgg#4867)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(mobile): reconnect environments immediately on resume (pingdotgg#4878)

* feat(web): pasting a huge screenshot now compresses it instead of erroring (pingdotgg#4967)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): regenerate thread titles from sidebar (pingdotgg#4810)

* fix(web): show server update progress through reconnect (pingdotgg#4903)

* feat(search): find threads by conversation content (pingdotgg#4959)

* fix: marketing site Vercel builds no longer die after ~100 deploys (pingdotgg#4975)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): server updates no longer look like warnings (pingdotgg#4992)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Check for mobile app updates on launch (pingdotgg#4958)

Co-authored-by: codex <[email protected]>

* fix(mobile): support pre-Liquid-Glass iOS bottom toolbar (pingdotgg#4984)

* fix(server): restore PR detection without HOME (pingdotgg#4985)

* fix(web): fill fast mode icon (pingdotgg#5004)

* fix: cache project favicons across web and mobile (pingdotgg#4767)

* perf(ci): cut stale runs and redundant setup (pingdotgg#4802)

* chore(mobile): bump app version to 1.0.1

Co-Authored-By: Claude Fable 5 <[email protected]>

* style(web): make scroll-to-end pill translucent (pingdotgg#5036)

* fix(ci): drop sparse-checkout from EAS workflows

actions/checkout implements sparse-checkout with --filter=blob:none, so
the runner repo is a partial clone missing the .repos/ blobs. eas-cli
archives the project via `git clone --depth 1 file://<workspace>`,
which upload-pack cannot serve from a partial clone and exits 128
(pingdotgg#4802 broke both EAS build workflows this way).

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(server): cache default branch name and origin existence across status refreshes (pingdotgg#5008)

* feat(shared): support shorthand (major-only) versions in the semver helpers (pingdotgg#5027)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): remove unnecessary photo library permission (pingdotgg#4929)

* fix(shared): lenient JSON parser deletes commas inside string values (pingdotgg#5025)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): default bare IP pairing to HTTP (pingdotgg#4990)

* fix(mobile): restore iOS Threads branding (pingdotgg#4862)

* chore: add mobile issue template area (pingdotgg#4895)

* fix(desktop): link release notes from the update downloaded toast (pingdotgg#4771)

Co-authored-by: Claude Opus 5 <[email protected]>

* fix(mobile): accept Android clipboard images in composer (pingdotgg#4836)

* fix(mobile): show the correct build channel in Android's Threads page header (pingdotgg#4861)

* fix(contracts): decode growing config unions forward-compatibly (pingdotgg#5055)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): repair the mobile showcase screenshots workflow (pingdotgg#5057)

* fix(ci): capture iPad App Store screenshots in landscape (pingdotgg#5065)

* fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm layout (pingdotgg#5066)

* feat(cli): `npx t3 pair` - generate QR code from a running server (pingdotgg#4955)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): render terminals with libghostty-vt (pingdotgg#4860)

Co-authored-by: Claude Fable 5 <[email protected]>

* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(mobile): add thread snoozing (pingdotgg#5053)

* feat(mobile): make settled threads collapsible (pingdotgg#5056)

* follow-up normalization after pingdotgg#4700. (pingdotgg#4498)

Co-authored-by: T3 Code Test <[email protected]>

* feat(web): search threads from the sidebar (pingdotgg#4769)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(release): prepare Command Center desktop v1

* fix(ci): allow public release publisher identity

* fix(web): avoid Windows preview path collision

* test(release): reject Windows module path collisions

* fix(release): bundle command center core

* fix: audit preserved upstream history safely

* feat(providers): add Kimi, subagents, and usage analytics

* fix(ci): repair reconnects and PNG safety scanning

* test(desktop): update Clerk environment fixture

* fix(ci): align provider and server integration contracts

* perf(web): skip impossible image encodings

---------

Signed-off-by: Yordis Prieto <[email protected]>
Co-authored-by: mel <[email protected]>
Co-authored-by: Theo Browne <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Tristan Knight <[email protected]>
Co-authored-by: Christoph Herzog <[email protected]>
Co-authored-by: Andrew Barnes <[email protected]>
Co-authored-by: Shoaib <[email protected]>
Co-authored-by: Shoaib Ansari <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Guilherme Vieira <[email protected]>
Co-authored-by: James <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: root <[email protected]>
Co-authored-by: Andrew Forster <[email protected]>
Co-authored-by: codex <[email protected]>
Co-authored-by: Chris Michael Guzman <[email protected]>
Co-authored-by: Vadym Kotai <[email protected]>
Co-authored-by: Utkarsh Patil <[email protected]>
Co-authored-by: xxashxx-svg <[email protected]>
Co-authored-by: Maxwell Young <[email protected]>
Co-authored-by: Yordis Prieto <[email protected]>
Co-authored-by: Rhiz3K <[email protected]>
Co-authored-by: Rhiz3K <[email protected]>
Co-authored-by: Anirudh Coontoor <[email protected]>
Co-authored-by: Rusiru Sadathana <[email protected]>
Co-authored-by: ss <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Leonel Rivas <[email protected]>
Co-authored-by: Jaret Bottoms <[email protected]>
Co-authored-by: Ishan <[email protected]>
Co-authored-by: Yukun Shan <[email protected]>
Co-authored-by: Miklós Fazekas <[email protected]>
Co-authored-by: Henry Zhang <[email protected]>
Co-authored-by: Rushikesh Gaikwad <[email protected]>
Co-authored-by: legs <[email protected]>
Co-authored-by: shivam <[email protected]>
Co-authored-by: tomlit <[email protected]>
Co-authored-by: jan <[email protected]>
Co-authored-by: Alex Southwell <[email protected]>
Co-authored-by: Max Katz <[email protected]>
Co-authored-by: Krzysztof Moch <[email protected]>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <[email protected]>
Co-authored-by: wukko <[email protected]>
Co-authored-by: Wout Stiens <[email protected]>
Co-authored-by: ohbentos <[email protected]>
Co-authored-by: Jake Leventhal <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Gabriel De Andrade <[email protected]>
Co-authored-by: Jono Kemball <[email protected]>
Co-authored-by: Arham Amin <[email protected]>
Co-authored-by: Elaine Lyons <[email protected]>
Co-authored-by: Simone <[email protected]>
Co-authored-by: Max Anderson <[email protected]>
Co-authored-by: Aditya Vardhan Sharma <[email protected]>
Co-authored-by: Mike Olson <[email protected]>
Co-authored-by: T3 Code Test <[email protected]>
Co-authored-by: atryan <[email protected]>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 2, 2026
* fix: delegate OpenCode session titles to provider (pingdotgg#3720)

* Archive selected threads from the context menu (pingdotgg#3895)

* fix(cli): support force removing projects (pingdotgg#3922)

* fix: allow sidebar to be shrunk when wider than viewport (pingdotgg#2456)

Co-authored-by: Shoaib Ansari <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* fix(codex): show web search query and url in tool call details (pingdotgg#2093)

Co-authored-by: Julius Marminge <[email protected]>

* Add Codex launch arguments setting (pingdotgg#2892)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: root <[email protected]>

* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)

Co-authored-by: Julius Marminge <[email protected]>

* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)

Co-authored-by: codex <[email protected]>

* fix(preview): preserve direct localhost navigation (pingdotgg#3939)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)

Co-authored-by: codex <[email protected]>

* Gate iOS glass layout on native support (pingdotgg#4032)

Co-authored-by: codex <[email protected]>

* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)

Co-authored-by: codex <[email protected]>

* fix(server): use CLI for OpenCode health check instead of spawning server (pingdotgg#4153)

* fix(web): scope timeline minimap hover target to the side gutter (pingdotgg#3869)

Co-authored-by: Claude Fable 5 <[email protected]>

* [codex] show complete approval details (pingdotgg#4111)

* fix(web): paint text selection over composer chips (pingdotgg#4139)

Signed-off-by: Yordis Prieto <[email protected]>

* [codex] preserve custom model slugs (pingdotgg#4168)

* fix(web): preview workspace images in the file panel (pingdotgg#3996)

Co-authored-by: Rhiz3K <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)

Co-authored-by: Julius Marminge <[email protected]>
Signed-off-by: Yordis Prieto <[email protected]>

* fix(desktop): preserve main window bounds (pingdotgg#3851)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)

Co-authored-by: codex <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)

Co-authored-by: Julius Marminge <[email protected]>

* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)

Co-authored-by: codex <[email protected]>

* fix(web): always show environment chip for remote projects (pingdotgg#4217)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): keep composer editable while disconnected (pingdotgg#4241)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)

Co-authored-by: Claude Fable 5 <[email protected]>

* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: maria-rcks <[email protected]>

* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)

Co-authored-by: codex <[email protected]>

* Preserve connecting status while a turn starts (pingdotgg#4101)

Co-authored-by: codex <[email protected]>

* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)

Co-authored-by: codex <[email protected]>

* [codex] keep scoped package references as text (pingdotgg#4167)

Co-authored-by: codex <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* fix(web): default provider selection for users without Codex (pingdotgg#4117)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* Unify temporary worktree branch naming (pingdotgg#4278)

* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 (pingdotgg#4279)

* Stabilize sidebar settling animations (pingdotgg#4280)

* Restore Copy Link in chat link context menu (pingdotgg#4161)

Co-authored-by: Julius Marminge <[email protected]>

* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog (pingdotgg#4213)

* Preserve draft thread highlighting during promotion (pingdotgg#4283)

Co-authored-by: codex <[email protected]>

* Move mobile working timer into the thread timeline (pingdotgg#4285)

* Stabilize PR status lookups and provider session lifecycle (pingdotgg#4281)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 (pingdotgg#4269)

* fix(server): don't drop sticky PR fallback when remote URL can't be resolved (pingdotgg#4289)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add remote server updates and standalone service management (pingdotgg#4286)

Co-authored-by: codex <[email protected]>

* Refine light-mode sidebar surfaces (pingdotgg#4268)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: codex <[email protected]>

* fix(mobile): don't mark Android VPN/Tailscale as offline when connected (pingdotgg#3949)

* improve and prevent silent thread branch drift and PR fetching (pingdotgg#2284)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* feat(web): refresh application surfaces

* style(web): polish dark mode dialogs

* fix(web): unify and tune glass surfaces

Co-authored-by: codex <[email protected]>

* fix(web): apply glass opacity to thread tooltip

* fix(web): override thread tooltip background

* fix(web): apply glass opacity to model picker

* style(web): polish glass opacity slider

* fix(web): apply glass opacity to command palette

* fix(web): add glass composer alerts

* fix(web): honor composer glass opacity

* test(web): stabilize timeline module setup

* style(web): fade settings content beneath navbar

* test(desktop): include glass opacity in settings fixture

* fix(web): address redesign review findings

* fix(web): sync provider banner dismissal

* fix(web): new-thread defaults ignored for remote environments (pingdotgg#4276)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add shared t3.json project configuration support (pingdotgg#4317)

* Restore light-mode surfaces and refine dialog styling

- Restore light-mode glass, dialog, dropdown, and composer colors
- Refine provider wizard, changed-file cards, sidebar controls, and buttons
- Update wizard step tests for the new list structure

* Unify dialog glass and fix composer overlays (pingdotgg#4365)

Co-authored-by: codex <[email protected]>

* fix(web): warn before silent Windows updates (pingdotgg#4350)

* [codex] Move project grouping to General settings (pingdotgg#4313)

Co-authored-by: codex <[email protected]>

* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)

Co-authored-by: codex <[email protected]>

* [codex] Move mobile project grouping to General settings (pingdotgg#4315)

Co-authored-by: codex <[email protected]>

* [codex] Deduplicate connection failure messaging (pingdotgg#4367)

Co-authored-by: codex <[email protected]>

* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* [codex] restore Sidebar V2 project actions (pingdotgg#4373)

Co-authored-by: codex <[email protected]>

* [codex] Group projects in new-thread pickers (pingdotgg#4312)

Co-authored-by: codex <[email protected]>

* fix(web): restore dark composer toolbar styling

* Fix thread tooltip folder icon color (pingdotgg#4383)

* fix(server): parse CLI version in update preflight (pingdotgg#4389)

* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort (pingdotgg#4274)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix logical project grouping labels on mobile (pingdotgg#4391)

Co-authored-by: codex <[email protected]>

* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)

Co-authored-by: codex <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>

* fix(cli): publish nightly branded favicons (pingdotgg#4372)

* Fix thread loading flash (pingdotgg#4396)

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

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

* Improve composer glass fallbacks (pingdotgg#4406)

Co-authored-by: codex <[email protected]>

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

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

Co-authored-by: Claude Fable 5 <[email protected]>

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

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: maria <[email protected]>

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

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

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

Co-authored-by: codex <[email protected]>

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

Co-authored-by: codex <[email protected]>

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

Co-authored-by: codex <[email protected]>

* Add Claude Opus 5 model (pingdotgg#4472)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
Co-authored-by: Theo Browne <[email protected]>

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

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

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(dev): skip browser-blocked ports (pingdotgg#4608)

* fix: cut websocket throughput in half by pruning activity payloads (pingdotgg#4622)

* perf(mobile): defer work-log detail serialization (pingdotgg#4607)

* test: account for lazy thread feed details (pingdotgg#4628)

* feat(relay): limit managed tunnels per user (pingdotgg#4530)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add managed tunnel limits migration (pingdotgg#4635)

* Add background preview capture and picture-in-picture support (pingdotgg#4397)

Co-authored-by: codex <[email protected]>

* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)

Co-authored-by: Claude Fable 5 <[email protected]>

* Upgrade Effect and Alchemy betas (pingdotgg#4643)

Prepare Relay production infrastructure for the PlanetScale PS_20 HA topology, upgrade Effect and Alchemy to compatible betas, reconcile migration state, and preserve patched MCP session termination behavior.\n\nCo-authored-by: codex <[email protected]>

* feat: allow new thread creation through project breadcrumbs (pingdotgg#4638)

* fix(web): scope PR state to the thread branch (pingdotgg#4460)

Co-authored-by: codex <[email protected]>

* Drop redundant Relay user indexes (pingdotgg#4648)

Co-authored-by: codex <[email protected]>

* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)

Co-authored-by: codex <[email protected]>

* Fix live sidebar resize limits and defer Alchemy runtime context (pingdotgg#4655)

* fix(web): constrain branch toolbar context (pingdotgg#4657)

* Keep MCP credentials alive across provider turns (pingdotgg#4659)

* fix: close actions dropdown when editing (pingdotgg#4660)

* fix(preview): stabilize PiP viewport identity (pingdotgg#4661)

Co-authored-by: codex <[email protected]>

* Add glass styling for thread tooltips and simplify preview tab handling (pingdotgg#4665)

* Use tarball archiving for hosted web deploys (pingdotgg#4669)

* fix(server): bound editor discovery during config loading (pingdotgg#4291)

* Prevent draft thread detail polling before shell registration (pingdotgg#4670)

Co-authored-by: codex <[email protected]>

* feat: add configurable source control writing settings (pingdotgg#4204)

Co-authored-by: Claude <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* feat(diff-panel): show total line additions and deletions (pingdotgg#4674)

* Clear provider update actions while updating (pingdotgg#4676)

* Fix sidebar highlighting for draft threads (pingdotgg#4679)

* Use glass surfaces for web toasts (pingdotgg#4681)

* Show origin ref in branch trigger label (pingdotgg#4680)

Co-authored-by: codex <[email protected]>

* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) (pingdotgg#4675)

* chore(release): prepare v0.0.29

* Add OTA update checks to mobile settings (pingdotgg#4686)

* fix(mobile): threads load snapped to bottom on iOS (pingdotgg#4689)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): 33 web UI fixes (pingdotgg#4700)

* Make mobile Thread List v2 the default (pingdotgg#4717)

* Fix mobile showcase workflow without Clerk (pingdotgg#4718)

* Fix relay credential lookup for unlinked environments (pingdotgg#4692)

Co-authored-by: codex <[email protected]>

* Settle merged PR threads immediately (pingdotgg#4704)

* feat(web): add maria's sidebar header artwork toggle (pingdotgg#4652)

* feat(web): add appearance settings category (pingdotgg#4715)

* fix(desktop): allow updater-controlled relaunch (pingdotgg#4721)

* fix(web): prevent diff panel scroll jumping (pingdotgg#4724)

* Link inline code file paths in chat markdown (pingdotgg#4726)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)

Co-authored-by: Claude <[email protected]>

* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: overhaul agent guidance (pingdotgg#4782)

* Prevent sidebar row labels from truncating (pingdotgg#4789)

* perf(server): gzip large thread snapshots (pingdotgg#4788)

* fix(web): stashed prompts now survive switching providers (pingdotgg#4787)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Git ref refresh resource storms (pingdotgg#4727)

Co-authored-by: codex <[email protected]>

* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): defer command palette filesystem navigation (pingdotgg#2109)

Co-authored-by: codex <[email protected]>

* fix(release): skip scripts during Vercel installs (pingdotgg#4796)

* refactor(client): share filesystem browse navigation (pingdotgg#4797)

Co-authored-by: codex <[email protected]>

* fix(mobile): defer filesystem navigation (pingdotgg#4799)

Co-authored-by: codex <[email protected]>

* refactor(server): use native HTTP compression streams (pingdotgg#4798)

Co-authored-by: codex <[email protected]>

* Remove Connect waitlist and add GA announcement tooling (pingdotgg#4691)

* Fix Connect sign-in settings label (pingdotgg#4806)

* chore(release): prepare v0.0.30

* fix(desktop): restore T3 Connect sign-in (pingdotgg#4809)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>

* Simplify files panel header (pingdotgg#4828)

* build(desktop): reduce installed app size by ~300MB (pingdotgg#4824)

* Update model version from claude-opus-4-8 to claude-opus-5 (pingdotgg#4832)

* Preserve the thread shell while detail loads (pingdotgg#4830)

* Reduce idle work and disk churn with native resource diagnostics (pingdotgg#2679)

Co-authored-by: codex <[email protected]>

* fix(server): detect repositories after initialization (pingdotgg#4848)

* perf(server): merge separate staged/unstaged numstat calls into single diff HEAD --numstat (pingdotgg#4843)

* fix(git): disable external diff for review diff previews (pingdotgg#4854)

* Fix editable file focus and live syntax highlighting (pingdotgg#3979)

* fix(web): remember the rendered-markdown choice across threads (pingdotgg#4853)

Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Claude Opus 5 <[email protected]>

* chore(release): prepare v0.0.31

* fix(mobile): reduce thread feed scroll jank (pingdotgg#4874)

* fix(web): restore sidebar v2 thread actions and terminal icon (pingdotgg#4712)

* fix(web): settle button now works on hover, not just right-click (pingdotgg#4905)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(clients): disable add project while disconnected (pingdotgg#4834)

* fix(composer): hide default Codex service tier (pingdotgg#4784)

* docs: link iOS and Android app store downloads (pingdotgg#4902)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): align remote server update action (pingdotgg#4731)

* fix(connect): suggest a serve command that matches how you ran connect (pingdotgg#4897)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): stop shared content errors in Personal Team builds (pingdotgg#4943)

* perf(mobile): sends respond instantly, thread opens stop freezing (pingdotgg#4882)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show Codex fast mode as a bolt (pingdotgg#4947)

* docs: seed worktrees with a copy of real userdata instead of banning it (pingdotgg#4949)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): support dragged images in the composer (pingdotgg#4953)

* fix(mobile): stop long iOS threads from jumping while scrolling up (pingdotgg#4867)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(mobile): reconnect environments immediately on resume (pingdotgg#4878)

* feat(web): pasting a huge screenshot now compresses it instead of erroring (pingdotgg#4967)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): regenerate thread titles from sidebar (pingdotgg#4810)

* fix(web): show server update progress through reconnect (pingdotgg#4903)

* feat(search): find threads by conversation content (pingdotgg#4959)

* fix: marketing site Vercel builds no longer die after ~100 deploys (pingdotgg#4975)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): server updates no longer look like warnings (pingdotgg#4992)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Check for mobile app updates on launch (pingdotgg#4958)

Co-authored-by: codex <[email protected]>

* fix(mobile): support pre-Liquid-Glass iOS bottom toolbar (pingdotgg#4984)

* fix(server): restore PR detection without HOME (pingdotgg#4985)

* fix(web): fill fast mode icon (pingdotgg#5004)

* fix: cache project favicons across web and mobile (pingdotgg#4767)

* perf(ci): cut stale runs and redundant setup (pingdotgg#4802)

* chore(mobile): bump app version to 1.0.1

Co-Authored-By: Claude Fable 5 <[email protected]>

* style(web): make scroll-to-end pill translucent (pingdotgg#5036)

* fix(ci): drop sparse-checkout from EAS workflows

actions/checkout implements sparse-checkout with --filter=blob:none, so
the runner repo is a partial clone missing the .repos/ blobs. eas-cli
archives the project via `git clone --depth 1 file://<workspace>`,
which upload-pack cannot serve from a partial clone and exits 128
(pingdotgg#4802 broke both EAS build workflows this way).

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(server): cache default branch name and origin existence across status refreshes (pingdotgg#5008)

* feat(shared): support shorthand (major-only) versions in the semver helpers (pingdotgg#5027)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): remove unnecessary photo library permission (pingdotgg#4929)

* fix(shared): lenient JSON parser deletes commas inside string values (pingdotgg#5025)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): default bare IP pairing to HTTP (pingdotgg#4990)

* fix(mobile): restore iOS Threads branding (pingdotgg#4862)

* chore: add mobile issue template area (pingdotgg#4895)

* fix(desktop): link release notes from the update downloaded toast (pingdotgg#4771)

Co-authored-by: Claude Opus 5 <[email protected]>

* fix(mobile): accept Android clipboard images in composer (pingdotgg#4836)

* fix(mobile): show the correct build channel in Android's Threads page header (pingdotgg#4861)

* fix(contracts): decode growing config unions forward-compatibly (pingdotgg#5055)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): repair the mobile showcase screenshots workflow (pingdotgg#5057)

* fix(ci): capture iPad App Store screenshots in landscape (pingdotgg#5065)

* fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm layout (pingdotgg#5066)

* feat(cli): `npx t3 pair` - generate QR code from a running server (pingdotgg#4955)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): render terminals with libghostty-vt (pingdotgg#4860)

Co-authored-by: Claude Fable 5 <[email protected]>

* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(mobile): add thread snoozing (pingdotgg#5053)

* feat(mobile): make settled threads collapsible (pingdotgg#5056)

* follow-up normalization after pingdotgg#4700. (pingdotgg#4498)

Co-authored-by: T3 Code Test <[email protected]>

* feat(web): search threads from the sidebar (pingdotgg#4769)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(release): prepare Command Center desktop v1

* fix(ci): allow public release publisher identity

* fix(web): avoid Windows preview path collision

* test(release): reject Windows module path collisions

* fix(release): bundle command center core

* fix: audit preserved upstream history safely

* feat(providers): add Kimi, subagents, and usage analytics

* fix(ci): repair reconnects and PNG safety scanning

* test(desktop): update Clerk environment fixture

* fix(ci): align provider and server integration contracts

* perf(web): skip impossible image encodings

* fix command center chats on native desktop hosts

---------

Signed-off-by: Yordis Prieto <[email protected]>
Co-authored-by: Tristan Knight <[email protected]>
Co-authored-by: Christoph Herzog <[email protected]>
Co-authored-by: Andrew Barnes <[email protected]>
Co-authored-by: Shoaib <[email protected]>
Co-authored-by: Shoaib Ansari <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Guilherme Vieira <[email protected]>
Co-authored-by: James <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: root <[email protected]>
Co-authored-by: Andrew Forster <[email protected]>
Co-authored-by: codex <[email protected]>
Co-authored-by: Chris Michael Guzman <[email protected]>
Co-authored-by: Vadym Kotai <[email protected]>
Co-authored-by: Utkarsh Patil <[email protected]>
Co-authored-by: xxashxx-svg <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Maxwell Young <[email protected]>
Co-authored-by: Yordis Prieto <[email protected]>
Co-authored-by: Rhiz3K <[email protected]>
Co-authored-by: Rhiz3K <[email protected]>
Co-authored-by: Anirudh Coontoor <[email protected]>
Co-authored-by: Rusiru Sadathana <[email protected]>
Co-authored-by: ss <[email protected]>
Co-authored-by: Theo Browne <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Leonel Rivas <[email protected]>
Co-authored-by: Jaret Bottoms <[email protected]>
Co-authored-by: Ishan <[email protected]>
Co-authored-by: Yukun Shan <[email protected]>
Co-authored-by: Miklós Fazekas <[email protected]>
Co-authored-by: Henry Zhang <[email protected]>
Co-authored-by: Rushikesh Gaikwad <[email protected]>
Co-authored-by: legs <[email protected]>
Co-authored-by: shivam <[email protected]>
Co-authored-by: tomlit <[email protected]>
Co-authored-by: jan <[email protected]>
Co-authored-by: Alex Southwell <[email protected]>
Co-authored-by: Max Katz <[email protected]>
Co-authored-by: Krzysztof Moch <[email protected]>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <[email protected]>
Co-authored-by: wukko <[email protected]>
Co-authored-by: Wout Stiens <[email protected]>
Co-authored-by: ohbentos <[email protected]>
Co-authored-by: Jake Leventhal <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Gabriel De Andrade <[email protected]>
Co-authored-by: Jono Kemball <[email protected]>
Co-authored-by: Arham Amin <[email protected]>
Co-authored-by: Elaine Lyons <[email protected]>
Co-authored-by: Simone <[email protected]>
Co-authored-by: Max Anderson <[email protected]>
Co-authored-by: Aditya Vardhan Sharma <[email protected]>
Co-authored-by: Mike Olson <[email protected]>
Co-authored-by: T3 Code Test <[email protected]>
Co-authored-by: atryan <[email protected]>
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Aug 6, 2026
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Aug 6, 2026
Treat unknown snooze support (no server configs yet) as supported,
matching buildThreadListV2Items, instead of calling .has on undefined.

Co-authored-by: aaditagrawal <[email protected]>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 7, 2026
## What's Changed
* fix(mobile): reduce thread feed scroll jank by @gabrielelpidio in pingdotgg/t3code#4874
* fix(web): restore sidebar v2 thread actions and terminal icon by @Noojuno in pingdotgg/t3code#4712
* fix(web): settle button now works on hover, not just right-click by @t3dotgg in pingdotgg/t3code#4905
* fix(clients): disable add project while disconnected by @StiensWout in pingdotgg/t3code#4834
* fix(composer): hide default Codex service tier by @maxktz in pingdotgg/t3code#4784
* docs: link iOS and Android app store downloads by @t3dotgg in pingdotgg/t3code#4902
* fix(web): align remote server update action by @StiensWout in pingdotgg/t3code#4731
* fix(connect): suggest a serve command that matches how you ran connect by @t3dotgg in pingdotgg/t3code#4897
* fix(mobile): stop shared content errors in Personal Team builds by @t3dotgg in pingdotgg/t3code#4943
* perf(mobile): sends respond instantly, thread opens stop freezing by @t3dotgg in pingdotgg/t3code#4882
* fix(web): show Codex fast mode as a bolt by @t3dotgg in pingdotgg/t3code#4947
* docs: seed worktrees with a copy of real userdata instead of banning it by @t3dotgg in pingdotgg/t3code#4949
* fix(mobile): support dragged images in the composer by @t3dotgg in pingdotgg/t3code#4953
* fix(mobile): stop long iOS threads from jumping while scrolling up by @t3dotgg in pingdotgg/t3code#4867
* fix(web): keep worktree default when switching a draft's machine by @t3dotgg in pingdotgg/t3code#4964
* perf(mobile): reconnect environments immediately on resume by @t3dotgg in pingdotgg/t3code#4878
* feat(web): pasting a huge screenshot now compresses it instead of erroring by @t3dotgg in pingdotgg/t3code#4967
* feat(web): regenerate thread titles from sidebar by @t3dotgg in pingdotgg/t3code#4810
* fix(web): show server update progress through reconnect by @t3dotgg in pingdotgg/t3code#4903
* feat(search): find threads by conversation content by @t3dotgg in pingdotgg/t3code#4959
* fix: marketing site Vercel builds no longer die after ~100 deploys by @t3dotgg in pingdotgg/t3code#4975
* docs: split user and maintainer docs, fix 100+ stale claims by @t3dotgg in pingdotgg/t3code#4807
* fix(web): server updates no longer look like warnings by @t3dotgg in pingdotgg/t3code#4992
* fix(connect): reboots no longer strand the relay link, 403s now say why by @t3dotgg in pingdotgg/t3code#4988
* Add project file picker (⌘P) and project content search (⇧⌘F) by @jakeleventhal in pingdotgg/t3code#4855
* Check for mobile app updates on launch by @juliusmarminge in pingdotgg/t3code#4958
* fix(mobile): support pre-Liquid-Glass iOS bottom toolbar by @gabrielelpidio in pingdotgg/t3code#4984
* fix(server): restore PR detection without HOME by @StiensWout in pingdotgg/t3code#4985
* fix(web): fill fast mode icon by @maria-rcks in pingdotgg/t3code#5004
* fix: cache project favicons across web and mobile by @gabrielelpidio in pingdotgg/t3code#4767
* perf(ci): cut stale runs and redundant setup by @t3dotgg in pingdotgg/t3code#4802
* style(web): make scroll-to-end pill translucent by @maria-rcks in pingdotgg/t3code#5036
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux by @juliusmarminge in pingdotgg/t3code#5015
* perf(server): cache default branch name and origin existence across status refreshes by @UtkarshUsername in pingdotgg/t3code#5008
* feat(shared): support shorthand (major-only) versions in the semver helpers by @arhxam in pingdotgg/t3code#5027
* fix(mobile): remove unnecessary photo library permission by @skjiisa in pingdotgg/t3code#4929
* fix(shared): lenient JSON parser deletes commas inside string values by @arhxam in pingdotgg/t3code#5025
* fix(mobile): default bare IP pairing to HTTP by @Lucenx9 in pingdotgg/t3code#4990
* fix(mobile): restore iOS Threads branding by @PixPMusic in pingdotgg/t3code#4862
* chore: add mobile issue template area by @MaxAnderson95 in pingdotgg/t3code#4895
* fix(desktop): link release notes from the update downloaded toast by @Sy-D in pingdotgg/t3code#4771
* fix(mobile): accept Android clipboard images in composer by @adityavardhansharma in pingdotgg/t3code#4836
* fix(mobile): show the correct build channel in Android's Threads page header by @PixPMusic in pingdotgg/t3code#4861
* fix(contracts): decode growing config unions forward-compatibly by @juliusmarminge in pingdotgg/t3code#5055
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks by @t3dotgg in pingdotgg/t3code#5064
* fix(ci): repair the mobile showcase screenshots workflow by @juliusmarminge in pingdotgg/t3code#5057
* fix(ci): capture iPad App Store screenshots in landscape by @PixPMusic in pingdotgg/t3code#5065
* fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm layout by @mwolson in pingdotgg/t3code#5066
* feat(cli): `npx t3 pair` - generate QR code from a running server by @t3dotgg in pingdotgg/t3code#4955
* fix(server): self-update no longer rolls itself back on restart by @t3dotgg in pingdotgg/t3code#5095
* fix(ci): rotate iPad showcase captures without Simulator UI scripting by @juliusmarminge in pingdotgg/t3code#5094
* feat(web): render terminals with libghostty-vt by @StiensWout in pingdotgg/t3code#4860
* refactor: move the canonical libghostty-vt vendor to the repository root by @StiensWout in pingdotgg/t3code#5102
* feat(mobile): add thread snoozing by @gabrielelpidio in pingdotgg/t3code#5053
* feat(mobile): make settled threads collapsible by @PixPMusic in pingdotgg/t3code#5056
* follow-up normalization after #4700. by @shivamhwp in pingdotgg/t3code#4498
* feat(web): search threads from the sidebar by @shivamhwp in pingdotgg/t3code#4769
* feat(web): add settings sidebar search by @shivamhwp in pingdotgg/t3code#4682
* fix: threads with open PRs no longer auto-settle by @t3dotgg in pingdotgg/t3code#5151
* fix(server): bound thread catch-up replay and stop full-DB snapshot hydration by @t3dotgg in pingdotgg/t3code#5147
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread by @t3dotgg in pingdotgg/t3code#5159
* fix(server): make remote updates rollback-safe by @t3dotgg in pingdotgg/t3code#5181
* fix(web): stop settle controls overlapping the status label by @ipanasenko in pingdotgg/t3code#4574
* fix: normalize app icon glyph sizing by @t3-code[bot] in pingdotgg/t3code#5202
* fix(server): surface cloudflared FTL/PNC relay logs as warnings, not debug by @arhxam in pingdotgg/t3code#5076
* fix(server): stop npx service updates from silently leaving the old server running by @t3dotgg in pingdotgg/t3code#5217
* feat: fold legacy models into separate menus by @t3dotgg in pingdotgg/t3code#5190
* fix(desktop): claim the t3code:// scheme default on Linux at startup by @juliusmarminge in pingdotgg/t3code#5054
* fix(web): polish interface spacing by @maria-rcks in pingdotgg/t3code#5252
* fix(desktop): Niri/Hyprland - Linux secret storage backend by @mwolson in pingdotgg/t3code#2916
* fix(web): match loading screen to dark theme by @t3-code[bot] in pingdotgg/t3code#5303
* fix(web): blink the terminal cursor again by @StiensWout in pingdotgg/t3code#5314
* fix(terminal): protect held Ctrl/Cmd+W close shortcut by @StiensWout in pingdotgg/t3code#5322
* fix(server): strip replayable terminal queries from history by @StiensWout in pingdotgg/t3code#5319
* fix(contracts): decode ServerProviders forward-compatibly by @Brechard in pingdotgg/t3code#5327
* fix(web): simplify chat code blocks by @t3-code[bot] in pingdotgg/t3code#5301
* fix(web): align multiline error alert controls by @t3-code[bot] in pingdotgg/t3code#5304
* Upgrade Effect to beta.103 by @juliusmarminge in pingdotgg/t3code#5331
* fix(web): increase tooltip z-index to overlay popovers and menus by @naMqe-h in pingdotgg/t3code#5326
* fix(server): use a Cursor todo's title when its content is blank by @arhxam in pingdotgg/t3code#5073
* fix(ssh): isolate managed tunnel processes by @nateEc in pingdotgg/t3code#4347
* fix(server): scrub AppImage XDG_DATA_DIRS and GSETTINGS_SCHEMA_DIR from terminals by @arhxam in pingdotgg/t3code#5075
* fix(mobile): show correct provider icons for Grok, Cursor, and OpenCode by @Wraient in pingdotgg/t3code#4586
* fix(web): stop the chat timeline reading through the provider status banner by @Bil0000 in pingdotgg/t3code#5353
* fix(desktop,web): contain renderer memory growth and recover from renderer OOM crashes by @t3dotgg in pingdotgg/t3code#5148
* fix(server): generate durable thread titles by @t3dotgg in pingdotgg/t3code#5357
* fix(web): better right panel (new diffs styling) by @maria-rcks in pingdotgg/t3code#5260
* fix(server): keep regenerated titles on topic by @t3dotgg in pingdotgg/t3code#5365
* refactor(server): make title prompts plaintext by @t3dotgg in pingdotgg/t3code#5368
* feat(web): configurable fonts and sizes under Settings → Appearance by @StiensWout in pingdotgg/t3code#5103
* feat(sidebar-v2): bring back thread pinning by @t3dotgg in pingdotgg/t3code#5312
* feat(web): make pairing QR codes actually scannable, with endpoint choice by @t3dotgg in pingdotgg/t3code#5360
* fix(desktop,web): improve in-app browser shortcuts and URL behavior by @t3dotgg in pingdotgg/t3code#4703
* fix(web): prevent legacy model picker layout shift by @FllipEis in pingdotgg/t3code#5349
* fix(server): allow remote updates with database migrations by @t3dotgg in pingdotgg/t3code#5374
* fix(mcp): unblock Kimi models in OpenCode with preview tools by @hwanseoc in pingdotgg/t3code#5128
* fix(web): clear main branch lint warnings by @t3dotgg in pingdotgg/t3code#5384
* fix(mobile): preserve grouped project workspaces by @shivamhwp in pingdotgg/t3code#4642
* fix(mobile): prevent Android thread search crash by @shivamhwp in pingdotgg/t3code#5386
* fix(web): truncate long project switcher names by @FllipEis in pingdotgg/t3code#5348
* fix(mobile): avoid double dividers between thread sections by @shivamhwp in pingdotgg/t3code#5391
* fix(web): keep the composer command menu anchored to the composer by @StiensWout in pingdotgg/t3code#5336
* fix(web): restore terminal link hover styles by @StiensWout in pingdotgg/t3code#5382
* fix(ci): isolate releases from shared API rate limits by @t3dotgg in pingdotgg/t3code#5394
* fix(web): keep model picker shortcuts in sync by @t3dotgg in pingdotgg/t3code#5400
* fix(web): keep terminal font settings reliable by @StiensWout in pingdotgg/t3code#5397
* Enrich terminal font previews by @juliusmarminge in pingdotgg/t3code#5428
* fix(web): preserve terminal font size when splitting by @t3-code[bot] in pingdotgg/t3code#5444
* Prevent terminal loading flash by @juliusmarminge in pingdotgg/t3code#5432
* fix: reconnect faster after remote server updates by @t3dotgg in pingdotgg/t3code#5404
* feat: native subagent & workflow observability by @t3dotgg in pingdotgg/t3code#5219
* perf(server): stop shipping full MCP tool results in thread payloads by @t3dotgg in pingdotgg/t3code#5482
* fix(web): closed plan sidebar stays closed when returning to a thread by @t3dotgg in pingdotgg/t3code#5484
* fix: respect time format for sidebar snooze by @huxcrux in pingdotgg/t3code#4438
* fix: smooth remote server updates by @t3dotgg in pingdotgg/t3code#5470
* fix(server): drop superseded tool updates from snapshots by @t3dotgg in pingdotgg/t3code#5483
* fix(web): clarify auto permission fallback by @t3-code[bot] in pingdotgg/t3code#5431
* fix(acp): keep unknown approvals actionable by @t3-code[bot] in pingdotgg/t3code#5430
* fix(mobile): stop thread messages reading through pending cards by @carlosricojr in pingdotgg/t3code#5450
* fix(web): align composer inline chips with prompt text by @StiensWout in pingdotgg/t3code#5495
* fix(web): clear woke state on explicit thread actions by @StiensWout in pingdotgg/t3code#5486
* fix(server): skip origin fetch when creating worktrees in repos without an origin remote by @t3dotgg in pingdotgg/t3code#5556
* fix(web): update tooltip no longer dismisses when scrolling release notes by @t3dotgg in pingdotgg/t3code#5547
* fix(server): stop showing commit/push/PR notices as errors in the work log by @t3dotgg in pingdotgg/t3code#5559
* fix(web): show remote environment for non-Git projects by @t3dotgg in pingdotgg/t3code#5555
* fix(server): stopping a Claude thread no longer shows an ede_diagnostic error by @t3dotgg in pingdotgg/t3code#5557
* fix(web): show one toast when snoozing threads in bulk by @t3dotgg in pingdotgg/t3code#5560
* fix(server): let stopped threads settle immediately by @t3dotgg in pingdotgg/t3code#5553
* feat: paginate thread loading with user-anchored turn windows by @t3dotgg in pingdotgg/t3code#5493
* fix: prevent reconnect loops during server stalls by @gfsaaser24 in pingdotgg/t3code#5561
* fix(server): settle stopped Claude subagents by @t3dotgg in pingdotgg/t3code#5568
* fix: scrolling up during a running thread no longer snaps back to the bottom by @t3dotgg in pingdotgg/t3code#5566
* fix(server): one disconnecting client no longer blocks every reconnect by @t3dotgg in pingdotgg/t3code#5572
* test(server): catch client transfer regressions in CI by @t3dotgg in pingdotgg/t3code#5350
* fix(web): stop the "requests are slow" warning from firing on every provider update by @t3dotgg in pingdotgg/t3code#5570
* fix(web): keep agent panel rows stable by @t3dotgg in pingdotgg/t3code#5569
* docs: ship production T3 Connect public config in .env.example by @t3dotgg in pingdotgg/t3code#5573
* fix(web): plans stop hijacking the UI, fold into chat instead by @t3dotgg in pingdotgg/t3code#5558
* feat(web): remove Build/Plan toggle from the composer by @t3dotgg in pingdotgg/t3code#5551
* feat(web): per-device provider settings by @t3dotgg in pingdotgg/t3code#4479
* fix(mobile): invisible T3 Connect devices can now be seen and removed by @t3dotgg in pingdotgg/t3code#5563
* fix: add missing space before 'GitHub releases page' link on download page by @Mateleo in pingdotgg/t3code#4511
* fix(web): stop the sidebar "Working" label from pulsing by @t3dotgg in pingdotgg/t3code#5580
* feat(web): add modular theme library by @StiensWout in pingdotgg/t3code#5226
* fix(web): reading a thread clears Done; Woke is dismissible by @t3dotgg in pingdotgg/t3code#5579
* perf(dev): faster cold-start for dev web serving by @t3dotgg in pingdotgg/t3code#5584
* fix(dev): agents get --share right on the first try by @t3dotgg in pingdotgg/t3code#5586
* fix(mobile): improve keyboard avoiding by @jmeistrich in pingdotgg/t3code#5451
* fix(web): live background-work banner no longer hides behind the update notice by @t3dotgg in pingdotgg/t3code#5595
* fix(web): stabilize chat timeline positioning by @jmeistrich in pingdotgg/t3code#5449
* feat(server): record runtime mode per turn and on mode changes by @t3dotgg in pingdotgg/t3code#5593
* feat(web): thread actions from the chat header title by @t3dotgg in pingdotgg/t3code#5592
* fix(mobile): avoid iOS terminal reset on clear by @justynleung in pingdotgg/t3code#5440
* fix(mobile): pad scroll views above Android nav bar by @StoneCotton in pingdotgg/t3code#5415
* fix(mobile): keep Android chat text from showing through the composer by @PollyGlot in pingdotgg/t3code#5582
* fix(mobile): repair Clerk auth navigation headers by @gabrielelpidio in pingdotgg/t3code#5140
* Bump mobile app version to 1.0.2 by @juliusmarminge in pingdotgg/t3code#5588
* feat(web): click the pin icon to unpin a thread by @UtkarshUsername in pingdotgg/t3code#5578
* fix(web): show the correctly matching shortcut in new thread button's tooltip by @UtkarshUsername in pingdotgg/t3code#5594

## New Contributors
* @gabrielelpidio made their first contribution in pingdotgg/t3code#4874
* @arhxam made their first contribution in pingdotgg/t3code#5027
* @skjiisa made their first contribution in pingdotgg/t3code#4929
* @Lucenx9 made their first contribution in pingdotgg/t3code#4990
* @MaxAnderson95 made their first contribution in pingdotgg/t3code#4895
* @t3-code[bot] made their first contribution in pingdotgg/t3code#5202
* @Brechard made their first contribution in pingdotgg/t3code#5327
* @naMqe-h made their first contribution in pingdotgg/t3code#5326
* @Bil0000 made their first contribution in pingdotgg/t3code#5353
* @gfsaaser24 made their first contribution in pingdotgg/t3code#5561
* @Mateleo made their first contribution in pingdotgg/t3code#4511
* @jmeistrich made their first contribution in pingdotgg/t3code#5451
* @justynleung made their first contribution in pingdotgg/t3code#5440
* @StoneCotton made their first contribution in pingdotgg/t3code#5415
* @PollyGlot made their first contribution in pingdotgg/t3code#5582

**Full Changelog**: pingdotgg/t3code@v0.0.31...v0.0.32

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.32
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 8, 2026
* feat(web): add collapse-all toggle to diff panel (pingdotgg#4475)

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

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(dev): skip browser-blocked ports (pingdotgg#4608)

* fix: cut websocket throughput in half by pruning activity payloads (pingdotgg#4622)

* perf(mobile): defer work-log detail serialization (pingdotgg#4607)

* test: account for lazy thread feed details (pingdotgg#4628)

* feat(relay): limit managed tunnels per user (pingdotgg#4530)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add managed tunnel limits migration (pingdotgg#4635)

* Add background preview capture and picture-in-picture support (pingdotgg#4397)

Co-authored-by: codex <[email protected]>

* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)

Co-authored-by: Claude Fable 5 <[email protected]>

* Upgrade Effect and Alchemy betas (pingdotgg#4643)

Prepare Relay production infrastructure for the PlanetScale PS_20 HA topology, upgrade Effect and Alchemy to compatible betas, reconcile migration state, and preserve patched MCP session termination behavior.\n\nCo-authored-by: codex <[email protected]>

* feat: allow new thread creation through project breadcrumbs (pingdotgg#4638)

* fix(web): scope PR state to the thread branch (pingdotgg#4460)

Co-authored-by: codex <[email protected]>

* Drop redundant Relay user indexes (pingdotgg#4648)

Co-authored-by: codex <[email protected]>

* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)

Co-authored-by: codex <[email protected]>

* Fix live sidebar resize limits and defer Alchemy runtime context (pingdotgg#4655)

* fix(web): constrain branch toolbar context (pingdotgg#4657)

* Keep MCP credentials alive across provider turns (pingdotgg#4659)

* fix: close actions dropdown when editing (pingdotgg#4660)

* fix(preview): stabilize PiP viewport identity (pingdotgg#4661)

Co-authored-by: codex <[email protected]>

* Add glass styling for thread tooltips and simplify preview tab handling (pingdotgg#4665)

* Use tarball archiving for hosted web deploys (pingdotgg#4669)

* fix(server): bound editor discovery during config loading (pingdotgg#4291)

* Prevent draft thread detail polling before shell registration (pingdotgg#4670)

Co-authored-by: codex <[email protected]>

* feat: add configurable source control writing settings (pingdotgg#4204)

Co-authored-by: Claude <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* feat(diff-panel): show total line additions and deletions (pingdotgg#4674)

* Clear provider update actions while updating (pingdotgg#4676)

* Fix sidebar highlighting for draft threads (pingdotgg#4679)

* Use glass surfaces for web toasts (pingdotgg#4681)

* Show origin ref in branch trigger label (pingdotgg#4680)

Co-authored-by: codex <[email protected]>

* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) (pingdotgg#4675)

* chore(release): prepare v0.0.29

* Add OTA update checks to mobile settings (pingdotgg#4686)

* fix(mobile): threads load snapped to bottom on iOS (pingdotgg#4689)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): 33 web UI fixes (pingdotgg#4700)

* Make mobile Thread List v2 the default (pingdotgg#4717)

* Fix mobile showcase workflow without Clerk (pingdotgg#4718)

* Fix relay credential lookup for unlinked environments (pingdotgg#4692)

Co-authored-by: codex <[email protected]>

* Settle merged PR threads immediately (pingdotgg#4704)

* feat(web): add maria's sidebar header artwork toggle (pingdotgg#4652)

* feat(web): add appearance settings category (pingdotgg#4715)

* fix(desktop): allow updater-controlled relaunch (pingdotgg#4721)

* fix(web): prevent diff panel scroll jumping (pingdotgg#4724)

* Link inline code file paths in chat markdown (pingdotgg#4726)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)

Co-authored-by: Claude <[email protected]>

* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: overhaul agent guidance (pingdotgg#4782)

* Prevent sidebar row labels from truncating (pingdotgg#4789)

* perf(server): gzip large thread snapshots (pingdotgg#4788)

* fix(web): stashed prompts now survive switching providers (pingdotgg#4787)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Git ref refresh resource storms (pingdotgg#4727)

Co-authored-by: codex <[email protected]>

* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): defer command palette filesystem navigation (pingdotgg#2109)

Co-authored-by: codex <[email protected]>

* fix(release): skip scripts during Vercel installs (pingdotgg#4796)

* refactor(client): share filesystem browse navigation (pingdotgg#4797)

Co-authored-by: codex <[email protected]>

* fix(mobile): defer filesystem navigation (pingdotgg#4799)

Co-authored-by: codex <[email protected]>

* refactor(server): use native HTTP compression streams (pingdotgg#4798)

Co-authored-by: codex <[email protected]>

* Remove Connect waitlist and add GA announcement tooling (pingdotgg#4691)

* Fix Connect sign-in settings label (pingdotgg#4806)

* chore(release): prepare v0.0.30

* fix(desktop): restore T3 Connect sign-in (pingdotgg#4809)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>

* Simplify files panel header (pingdotgg#4828)

* build(desktop): reduce installed app size by ~300MB (pingdotgg#4824)

* Update model version from claude-opus-4-8 to claude-opus-5 (pingdotgg#4832)

* Preserve the thread shell while detail loads (pingdotgg#4830)

* Reduce idle work and disk churn with native resource diagnostics (pingdotgg#2679)

Co-authored-by: codex <[email protected]>

* fix(server): detect repositories after initialization (pingdotgg#4848)

* perf(server): merge separate staged/unstaged numstat calls into single diff HEAD --numstat (pingdotgg#4843)

* fix(git): disable external diff for review diff previews (pingdotgg#4854)

* Fix editable file focus and live syntax highlighting (pingdotgg#3979)

* fix(web): remember the rendered-markdown choice across threads (pingdotgg#4853)

Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Claude Opus 5 <[email protected]>

* chore(release): prepare v0.0.31

* fix(mobile): reduce thread feed scroll jank (pingdotgg#4874)

* fix(web): restore sidebar v2 thread actions and terminal icon (pingdotgg#4712)

* fix(web): settle button now works on hover, not just right-click (pingdotgg#4905)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(clients): disable add project while disconnected (pingdotgg#4834)

* fix(composer): hide default Codex service tier (pingdotgg#4784)

* docs: link iOS and Android app store downloads (pingdotgg#4902)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): align remote server update action (pingdotgg#4731)

* fix(connect): suggest a serve command that matches how you ran connect (pingdotgg#4897)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): stop shared content errors in Personal Team builds (pingdotgg#4943)

* perf(mobile): sends respond instantly, thread opens stop freezing (pingdotgg#4882)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show Codex fast mode as a bolt (pingdotgg#4947)

* docs: seed worktrees with a copy of real userdata instead of banning it (pingdotgg#4949)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): support dragged images in the composer (pingdotgg#4953)

* fix(mobile): stop long iOS threads from jumping while scrolling up (pingdotgg#4867)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(mobile): reconnect environments immediately on resume (pingdotgg#4878)

* feat(web): pasting a huge screenshot now compresses it instead of erroring (pingdotgg#4967)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): regenerate thread titles from sidebar (pingdotgg#4810)

* fix(web): show server update progress through reconnect (pingdotgg#4903)

* feat(search): find threads by conversation content (pingdotgg#4959)

* fix: marketing site Vercel builds no longer die after ~100 deploys (pingdotgg#4975)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): server updates no longer look like warnings (pingdotgg#4992)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Check for mobile app updates on launch (pingdotgg#4958)

Co-authored-by: codex <[email protected]>

* fix(mobile): support pre-Liquid-Glass iOS bottom toolbar (pingdotgg#4984)

* fix(server): restore PR detection without HOME (pingdotgg#4985)

* fix(web): fill fast mode icon (pingdotgg#5004)

* fix: cache project favicons across web and mobile (pingdotgg#4767)

* perf(ci): cut stale runs and redundant setup (pingdotgg#4802)

* chore(mobile): bump app version to 1.0.1

Co-Authored-By: Claude Fable 5 <[email protected]>

* style(web): make scroll-to-end pill translucent (pingdotgg#5036)

* fix(ci): drop sparse-checkout from EAS workflows

actions/checkout implements sparse-checkout with --filter=blob:none, so
the runner repo is a partial clone missing the .repos/ blobs. eas-cli
archives the project via `git clone --depth 1 file://<workspace>`,
which upload-pack cannot serve from a partial clone and exits 128
(pingdotgg#4802 broke both EAS build workflows this way).

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(server): cache default branch name and origin existence across status refreshes (pingdotgg#5008)

* feat(shared): support shorthand (major-only) versions in the semver helpers (pingdotgg#5027)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): remove unnecessary photo library permission (pingdotgg#4929)

* fix(shared): lenient JSON parser deletes commas inside string values (pingdotgg#5025)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): default bare IP pairing to HTTP (pingdotgg#4990)

* fix(mobile): restore iOS Threads branding (pingdotgg#4862)

* chore: add mobile issue template area (pingdotgg#4895)

* fix(desktop): link release notes from the update downloaded toast (pingdotgg#4771)

Co-authored-by: Claude Opus 5 <[email protected]>

* fix(mobile): accept Android clipboard images in composer (pingdotgg#4836)

* fix(mobile): show the correct build channel in Android's Threads page header (pingdotgg#4861)

* fix(contracts): decode growing config unions forward-compatibly (pingdotgg#5055)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): repair the mobile showcase screenshots workflow (pingdotgg#5057)

* fix(ci): capture iPad App Store screenshots in landscape (pingdotgg#5065)

* fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm layout (pingdotgg#5066)

* feat(cli): `npx t3 pair` - generate QR code from a running server (pingdotgg#4955)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): render terminals with libghostty-vt (pingdotgg#4860)

Co-authored-by: Claude Fable 5 <[email protected]>

* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(mobile): add thread snoozing (pingdotgg#5053)

* feat(mobile): make settled threads collapsible (pingdotgg#5056)

* follow-up normalization after pingdotgg#4700. (pingdotgg#4498)

Co-authored-by: T3 Code Test <[email protected]>

* feat(web): search threads from the sidebar (pingdotgg#4769)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): add settings sidebar search (pingdotgg#4682)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: threads with open PRs no longer auto-settle (pingdotgg#5151)

* fix(server): bound thread catch-up replay and stop full-DB snapshot hydration (pingdotgg#5147)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): make remote updates rollback-safe (pingdotgg#5181)

* fix(web): stop settle controls overlapping the status label (pingdotgg#4574)

* fix: normalize app icon glyph sizing (pingdotgg#5202)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(server): surface cloudflared FTL/PNC relay logs as warnings, not debug (pingdotgg#5076)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)

Co-authored-by: Claude <[email protected]>

* feat: fold legacy models into separate menus (pingdotgg#5190)

* fix(desktop): claim the t3code:// scheme default on Linux at startup (pingdotgg#5054)

* fix(web): polish interface spacing (pingdotgg#5252)

* fix(desktop): Niri/Hyprland - Linux secret storage backend (pingdotgg#2916)

Co-authored-by: Julius Marminge <[email protected]>

* fix(web): match loading screen to dark theme (pingdotgg#5303)

* fix(web): blink the terminal cursor again (pingdotgg#5314)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(terminal): protect held Ctrl/Cmd+W close shortcut (pingdotgg#5322)

* fix(server): strip replayable terminal queries from history (pingdotgg#5319)

* fix(contracts): decode ServerProviders forward-compatibly (pingdotgg#5327)

Co-authored-by: Rodrigo Brechard <[email protected]>

* fix(web): simplify chat code blocks (pingdotgg#5301)

* fix(web): align multiline error alert controls (pingdotgg#5304)

* Upgrade Effect to beta.103 (pingdotgg#5331)

* fix(web): increase tooltip z-index to overlay popovers and menus (pingdotgg#5326)

* fix(server): use a Cursor todo's title when its content is blank (pingdotgg#5073)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(ssh): isolate managed tunnel processes (pingdotgg#4347)

* fix(server): scrub AppImage XDG_DATA_DIRS and GSETTINGS_SCHEMA_DIR from terminals (pingdotgg#5075)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): show correct provider icons for Grok, Cursor, and OpenCode (pingdotgg#4586)

* fix(web): stop the chat timeline reading through the provider status banner (pingdotgg#5353)

* fix(desktop,web): contain renderer memory growth and recover from renderer OOM crashes (pingdotgg#5148)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): generate durable thread titles (pingdotgg#5357)

* fix(web): better right panel (new diffs styling) (pingdotgg#5260)

* fix(server): keep regenerated titles on topic (pingdotgg#5365)

* refactor(server): make title prompts plaintext (pingdotgg#5368)

* feat(web): configurable fonts and sizes under Settings → Appearance (pingdotgg#5103)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(desktop,web): improve in-app browser shortcuts and URL behavior (pingdotgg#4703)

* fix(web): prevent legacy model picker layout shift (pingdotgg#5349)

* fix(server): allow remote updates with database migrations (pingdotgg#5374)

* fix(mcp): unblock Kimi models in OpenCode with preview tools (pingdotgg#5128)

* fix(web): clear main branch lint warnings (pingdotgg#5384)

* fix(mobile): preserve grouped project workspaces (pingdotgg#4642)

Co-authored-by: T3 Code Test <[email protected]>

* fix(mobile): prevent Android thread search crash (pingdotgg#5386)

* fix(web): truncate long project switcher names (pingdotgg#5348)

* fix(mobile): avoid double dividers between thread sections (pingdotgg#5391)

Co-authored-by: T3 Code Test <[email protected]>

* fix(web): keep the composer command menu anchored to the composer (pingdotgg#5336)

* fix(web): restore terminal link hover styles (pingdotgg#5382)

* fix(ci): isolate releases from shared API rate limits (pingdotgg#5394)

* fix(web): keep model picker shortcuts in sync (pingdotgg#5400)

* fix(web): keep terminal font settings reliable (pingdotgg#5397)

* Enrich terminal font previews (pingdotgg#5428)

* fix(web): preserve terminal font size when splitting (pingdotgg#5444)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* Prevent terminal loading flash (pingdotgg#5432)

* fix: reconnect faster after remote server updates (pingdotgg#5404)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: native subagent & workflow observability (pingdotgg#5219)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: respect time format for sidebar snooze (pingdotgg#4438)

* fix(web): calm one-row server update status and banner

The version-skew banner is no longer an amber warning: it reads
"Server update available" with the raw versions (unreadable for
nightlies) moved to a tooltip. The in-flight rail (Download/Install/
Resume) becomes a single status row, "Downloading…" then
"Restarting…", since the wire installing stage is a sub-second
launcher handoff and "resuming" meant nothing to most people.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): keep the managed tunnel across remote update restarts

Measured on a live update: the server was back in ~9s but stayed
unreachable for ~96s, because releasing the tunnel on shutdown forces
the replacement tunnel's hostname route through 1-2 minutes of edge
propagation. An update handoff always brings a server right back
(new version or rollback), so the tunnel is never orphaned; skip the
release when the launcher state file records a pending update. The
next boot respawns the connector from the stored config against the
same tunnel and is reachable as soon as it connects.

Co-Authored-By: Claude Fable 5 <[email protected]>

* test(server): use the launcher state writer in release tests

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): release the tunnel when an explicit stop interrupts an update

A pending update in the launcher state is not proof a replacement
server is coming: `t3 service uninstall` or `systemctl stop` during
the pending window also tears the server down, permanently. The
launcher now writes a stop marker before signalling its child on an
explicit stop and clears it on the next start; the shutdown tunnel
release keeps the tunnel only for pending updates without the marker.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): clean up interrupted update trials

* fix(server): order explicit service shutdown

* fix(web): make update version tooltips accessible

* fix(server): separate trial cleanup from handoff retention

* fix(server): drop superseded tool updates from snapshots

A tool.updated row is the in-flight snapshot of a call; once the call
completes, the tool.completed row carries the final state and both
clients fold every matching update into it. Shipping the updates buys
nothing: 47k such rows exist in one real database, and a single thread
carries 3,291 of them.

Filter them out of thread snapshots, mirroring the existing
context-window dedup. Matching is per turn and only against a LATER
completion, so a revert that discards the completing turn cannot leave
a call unrepresented, and a later update under the same identity (the
next call, still in flight) survives. Live events are untouched.

Rows are matched on the same identity the clients collapse by: an
explicit data.toolCallId when the adapter emits one, otherwise the
itemType/title/detail triple. No tool lifecycle row in the real db
carries a toolCallId, so the fallback does the work.

Co-Authored-By: Claude Fable 5 <[email protected]>

* docs(server): pin interleaved-collapse divergence as intentional with test

Bugbot flagged that clients collapse only adjacent lifecycle rows, so
dropping a superseded update separated by an interleaved parallel call
diverges from full-history rendering. Measured on a real database: 1.5%
of dropped rows (553/36,581), all pure in-flight state whose final result
the retained completion still shows, and zero dropped rows carry a
client-merged payload field their completion lacks (verified across all
49,515 update rows). Documents the tradeoff and adds a test pinning it.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(web): clarify auto permission fallback (pingdotgg#5431)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(acp): keep unknown approvals actionable (pingdotgg#5430)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(mobile): stop thread messages reading through pending cards (pingdotgg#5450)

Co-authored-by: Claude Opus 5 <[email protected]>

* fix(web): align composer inline chips with prompt text (pingdotgg#5495)

* fix(web): clear woke state on explicit thread actions (pingdotgg#5486)

* fix(server): skip origin fetch when creating worktrees in repos without an origin remote (pingdotgg#5556)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show remote environment for non-Git projects (pingdotgg#5555)

* fix(server): stopping a Claude thread no longer shows an ede_diagnostic error (pingdotgg#5557)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show one toast when snoozing threads in bulk (pingdotgg#5560)

* fix(server): let stopped threads settle immediately (pingdotgg#5553)

* feat: paginate thread loading with user-anchored turn windows (pingdotgg#5493)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: prevent reconnect loops during server stalls (pingdotgg#5561)

Co-authored-by: t3-turbo-simulation <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Theo Browne <[email protected]>

* fix(server): settle stopped Claude subagents (pingdotgg#5568)

* fix: scrolling up during a running thread no longer snaps back to the bottom (pingdotgg#5566)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)

Co-authored-by: Claude <[email protected]>

* test(server): catch client transfer regressions in CI (pingdotgg#5350)

* fix(web): stop the "requests are slow" warning from firing on every provider update (pingdotgg#5570)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): keep agent panel rows stable (pingdotgg#5569)

* docs: ship production T3 Connect public config in .env.example (pingdotgg#5573)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): per-device provider settings (pingdotgg#4479)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: add missing space before 'GitHub releases page' link on download page (pingdotgg#4511)

* fix(web): stop the sidebar "Working" label from pulsing (pingdotgg#5580)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(web): add modular theme library (pingdotgg#5226)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(dev): Improve instructions for --share (pingdotgg#5586)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): improve keyboard avoiding (pingdotgg#5451)

* fix(web): live background-work banner no longer hides behind the update notice (pingdotgg#5595)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): stabilize chat timeline positioning (pingdotgg#5449)

Co-authored-by: codex <[email protected]>

* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(web): thread actions from the chat header title (pingdotgg#5592)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): avoid iOS terminal reset on clear (pingdotgg#5440)

* fix(mobile): pad scroll views above Android nav bar (pingdotgg#5415)

* fix(mobile): keep Android chat text from showing through the composer (pingdotgg#5582)

* fix(mobile): repair Clerk auth navigation headers (pingdotgg#5140)

Co-authored-by: codex <[email protected]>

* Bump mobile app version to 1.0.2 (pingdotgg#5588)

* feat(web): click the pin icon to unpin a thread (pingdotgg#5578)

* fix(web): show the correctly matching shortcut in new thread button's tooltip (pingdotgg#5594)

* chore: advance public upstream baseline

* chore: advance upstream baseline to v0.0.32

* fix: align react native patch lock hash

---------

Co-authored-by: jan <[email protected]>
Co-authored-by: Theo Browne <[email protected]>
Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
Co-authored-by: Alex Southwell <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>
Co-authored-by: Max Katz <[email protected]>
Co-authored-by: maria <[email protected]>
Co-authored-by: Krzysztof Moch <[email protected]>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <[email protected]>
Co-authored-by: wukko <[email protected]>
Co-authored-by: Wout Stiens <[email protected]>
Co-authored-by: Utkarsh Patil <[email protected]>
Co-authored-by: ohbentos <[email protected]>
Co-authored-by: Jake Leventhal <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Gabriel De Andrade <[email protected]>
Co-authored-by: Jono Kemball <[email protected]>
Co-authored-by: Arham Amin <[email protected]>
Co-authored-by: Elaine Lyons <[email protected]>
Co-authored-by: Simone <[email protected]>
Co-authored-by: Max Anderson <[email protected]>
Co-authored-by: Aditya Vardhan Sharma <[email protected]>
Co-authored-by: Mike Olson <[email protected]>
Co-authored-by: shivam <[email protected]>
Co-authored-by: T3 Code Test <[email protected]>
Co-authored-by: Illia Panasenko <[email protected]>
Co-authored-by: Rodrigo Brechard <[email protected]>
Co-authored-by: Rodrigo Brechard <[email protected]>
Co-authored-by: naMqe <[email protected]>
Co-authored-by: Yukun Shan <[email protected]>
Co-authored-by: Rushikesh Gaikwad <[email protected]>
Co-authored-by: Bilal Bakr <[email protected]>
Co-authored-by: Fllip <[email protected]>
Co-authored-by: Hwanseo Choi <[email protected]>
Co-authored-by: Hugo Blom <[email protected]>
Co-authored-by: Carlos Rico-Ospina <[email protected]>
Co-authored-by: Gabe Fletcher <[email protected]>
Co-authored-by: t3-turbo-simulation <[email protected]>
Co-authored-by: Mateleo <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Jay Meistrich <[email protected]>
Co-authored-by: Justyn Leung <[email protected]>
Co-authored-by: Tyler Saari <[email protected]>
Co-authored-by: Pavlo Trinko <[email protected]>
Co-authored-by: atryan <[email protected]>
adamfgr pushed a commit to agriffiths-bots/t3code that referenced this pull request Aug 11, 2026
* fix(desktop): allow updater-controlled relaunch (pingdotgg#4721)

* fix(web): prevent diff panel scroll jumping (pingdotgg#4724)

* Link inline code file paths in chat markdown (pingdotgg#4726)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)

Co-authored-by: Claude <[email protected]>

* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: overhaul agent guidance (pingdotgg#4782)

* Prevent sidebar row labels from truncating (pingdotgg#4789)

* perf(server): gzip large thread snapshots (pingdotgg#4788)

* fix(web): stashed prompts now survive switching providers (pingdotgg#4787)

Co-authored-by: Claude Fable 5 <[email protected]>

* Fix Git ref refresh resource storms (pingdotgg#4727)

Co-authored-by: codex <[email protected]>

* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): defer command palette filesystem navigation (pingdotgg#2109)

Co-authored-by: codex <[email protected]>

* fix(release): skip scripts during Vercel installs (pingdotgg#4796)

* refactor(client): share filesystem browse navigation (pingdotgg#4797)

Co-authored-by: codex <[email protected]>

* fix(mobile): defer filesystem navigation (pingdotgg#4799)

Co-authored-by: codex <[email protected]>

* refactor(server): use native HTTP compression streams (pingdotgg#4798)

Co-authored-by: codex <[email protected]>

* Remove Connect waitlist and add GA announcement tooling (pingdotgg#4691)

* Fix Connect sign-in settings label (pingdotgg#4806)

* chore(release): prepare v0.0.30

* fix(desktop): restore T3 Connect sign-in (pingdotgg#4809)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>

* Simplify files panel header (pingdotgg#4828)

* build(desktop): reduce installed app size by ~300MB (pingdotgg#4824)

* Update model version from claude-opus-4-8 to claude-opus-5 (pingdotgg#4832)

* Preserve the thread shell while detail loads (pingdotgg#4830)

* Reduce idle work and disk churn with native resource diagnostics (pingdotgg#2679)

Co-authored-by: codex <[email protected]>

* fix(server): detect repositories after initialization (pingdotgg#4848)

* perf(server): merge separate staged/unstaged numstat calls into single diff HEAD --numstat (pingdotgg#4843)

* fix(git): disable external diff for review diff previews (pingdotgg#4854)

* Fix editable file focus and live syntax highlighting (pingdotgg#3979)

* fix(web): remember the rendered-markdown choice across threads (pingdotgg#4853)

Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Claude Opus 5 <[email protected]>

* chore(release): prepare v0.0.31

* fix(mobile): reduce thread feed scroll jank (pingdotgg#4874)

* fix(web): restore sidebar v2 thread actions and terminal icon (pingdotgg#4712)

* fix(web): settle button now works on hover, not just right-click (pingdotgg#4905)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(clients): disable add project while disconnected (pingdotgg#4834)

* fix(composer): hide default Codex service tier (pingdotgg#4784)

* docs: link iOS and Android app store downloads (pingdotgg#4902)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): align remote server update action (pingdotgg#4731)

* fix(connect): suggest a serve command that matches how you ran connect (pingdotgg#4897)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): stop shared content errors in Personal Team builds (pingdotgg#4943)

* perf(mobile): sends respond instantly, thread opens stop freezing (pingdotgg#4882)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show Codex fast mode as a bolt (pingdotgg#4947)

* docs: seed worktrees with a copy of real userdata instead of banning it (pingdotgg#4949)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): support dragged images in the composer (pingdotgg#4953)

* fix(mobile): stop long iOS threads from jumping while scrolling up (pingdotgg#4867)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(mobile): reconnect environments immediately on resume (pingdotgg#4878)

* feat(web): pasting a huge screenshot now compresses it instead of erroring (pingdotgg#4967)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): regenerate thread titles from sidebar (pingdotgg#4810)

* fix(web): show server update progress through reconnect (pingdotgg#4903)

* feat(search): find threads by conversation content (pingdotgg#4959)

* fix: marketing site Vercel builds no longer die after ~100 deploys (pingdotgg#4975)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): server updates no longer look like warnings (pingdotgg#4992)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Check for mobile app updates on launch (pingdotgg#4958)

Co-authored-by: codex <[email protected]>

* fix(mobile): support pre-Liquid-Glass iOS bottom toolbar (pingdotgg#4984)

* fix(server): restore PR detection without HOME (pingdotgg#4985)

* fix(web): fill fast mode icon (pingdotgg#5004)

* fix: cache project favicons across web and mobile (pingdotgg#4767)

* perf(ci): cut stale runs and redundant setup (pingdotgg#4802)

* chore(mobile): bump app version to 1.0.1

Co-Authored-By: Claude Fable 5 <[email protected]>

* style(web): make scroll-to-end pill translucent (pingdotgg#5036)

* fix(ci): drop sparse-checkout from EAS workflows

actions/checkout implements sparse-checkout with --filter=blob:none, so
the runner repo is a partial clone missing the .repos/ blobs. eas-cli
archives the project via `git clone --depth 1 file://<workspace>`,
which upload-pack cannot serve from a partial clone and exits 128
(pingdotgg#4802 broke both EAS build workflows this way).

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(server): cache default branch name and origin existence across status refreshes (pingdotgg#5008)

* feat(shared): support shorthand (major-only) versions in the semver helpers (pingdotgg#5027)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): remove unnecessary photo library permission (pingdotgg#4929)

* fix(shared): lenient JSON parser deletes commas inside string values (pingdotgg#5025)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): default bare IP pairing to HTTP (pingdotgg#4990)

* fix(mobile): restore iOS Threads branding (pingdotgg#4862)

* chore: add mobile issue template area (pingdotgg#4895)

* fix(desktop): link release notes from the update downloaded toast (pingdotgg#4771)

Co-authored-by: Claude Opus 5 <[email protected]>

* fix(mobile): accept Android clipboard images in composer (pingdotgg#4836)

* fix(mobile): show the correct build channel in Android's Threads page header (pingdotgg#4861)

* fix(contracts): decode growing config unions forward-compatibly (pingdotgg#5055)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): repair the mobile showcase screenshots workflow (pingdotgg#5057)

* fix(ci): capture iPad App Store screenshots in landscape (pingdotgg#5065)

* fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm layout (pingdotgg#5066)

* feat(cli): `npx t3 pair` - generate QR code from a running server (pingdotgg#4955)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): render terminals with libghostty-vt (pingdotgg#4860)

Co-authored-by: Claude Fable 5 <[email protected]>

* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(mobile): add thread snoozing (pingdotgg#5053)

* feat(mobile): make settled threads collapsible (pingdotgg#5056)

* follow-up normalization after pingdotgg#4700. (pingdotgg#4498)

Co-authored-by: T3 Code Test <[email protected]>

* feat(web): search threads from the sidebar (pingdotgg#4769)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): add settings sidebar search (pingdotgg#4682)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: threads with open PRs no longer auto-settle (pingdotgg#5151)

* fix(server): bound thread catch-up replay and stop full-DB snapshot hydration (pingdotgg#5147)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): make remote updates rollback-safe (pingdotgg#5181)

* fix(web): stop settle controls overlapping the status label (pingdotgg#4574)

* fix: normalize app icon glyph sizing (pingdotgg#5202)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(server): surface cloudflared FTL/PNC relay logs as warnings, not debug (pingdotgg#5076)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)

Co-authored-by: Claude <[email protected]>

* feat: fold legacy models into separate menus (pingdotgg#5190)

* fix(desktop): claim the t3code:// scheme default on Linux at startup (pingdotgg#5054)

* fix(web): polish interface spacing (pingdotgg#5252)

* fix(desktop): Niri/Hyprland - Linux secret storage backend (pingdotgg#2916)

Co-authored-by: Julius Marminge <[email protected]>

* fix(web): match loading screen to dark theme (pingdotgg#5303)

* fix(web): blink the terminal cursor again (pingdotgg#5314)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(terminal): protect held Ctrl/Cmd+W close shortcut (pingdotgg#5322)

* fix(server): strip replayable terminal queries from history (pingdotgg#5319)

* fix(contracts): decode ServerProviders forward-compatibly (pingdotgg#5327)

Co-authored-by: Rodrigo Brechard <[email protected]>

* fix(web): simplify chat code blocks (pingdotgg#5301)

* fix(web): align multiline error alert controls (pingdotgg#5304)

* Upgrade Effect to beta.103 (pingdotgg#5331)

* fix(web): increase tooltip z-index to overlay popovers and menus (pingdotgg#5326)

* fix(server): use a Cursor todo's title when its content is blank (pingdotgg#5073)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(ssh): isolate managed tunnel processes (pingdotgg#4347)

* fix(server): scrub AppImage XDG_DATA_DIRS and GSETTINGS_SCHEMA_DIR from terminals (pingdotgg#5075)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): show correct provider icons for Grok, Cursor, and OpenCode (pingdotgg#4586)

* fix(web): stop the chat timeline reading through the provider status banner (pingdotgg#5353)

* fix(desktop,web): contain renderer memory growth and recover from renderer OOM crashes (pingdotgg#5148)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): generate durable thread titles (pingdotgg#5357)

* fix(web): better right panel (new diffs styling) (pingdotgg#5260)

* fix(server): keep regenerated titles on topic (pingdotgg#5365)

* refactor(server): make title prompts plaintext (pingdotgg#5368)

* feat(web): configurable fonts and sizes under Settings → Appearance (pingdotgg#5103)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(desktop,web): improve in-app browser shortcuts and URL behavior (pingdotgg#4703)

* fix(web): prevent legacy model picker layout shift (pingdotgg#5349)

* fix(server): allow remote updates with database migrations (pingdotgg#5374)

* fix(mcp): unblock Kimi models in OpenCode with preview tools (pingdotgg#5128)

* fix(web): clear main branch lint warnings (pingdotgg#5384)

* fix(mobile): preserve grouped project workspaces (pingdotgg#4642)

Co-authored-by: T3 Code Test <[email protected]>

* fix(mobile): prevent Android thread search crash (pingdotgg#5386)

* fix(web): truncate long project switcher names (pingdotgg#5348)

* fix(mobile): avoid double dividers between thread sections (pingdotgg#5391)

Co-authored-by: T3 Code Test <[email protected]>

* fix(web): keep the composer command menu anchored to the composer (pingdotgg#5336)

* fix(web): restore terminal link hover styles (pingdotgg#5382)

* fix(ci): isolate releases from shared API rate limits (pingdotgg#5394)

* fix(web): keep model picker shortcuts in sync (pingdotgg#5400)

* fix(web): keep terminal font settings reliable (pingdotgg#5397)

* Enrich terminal font previews (pingdotgg#5428)

* fix(web): preserve terminal font size when splitting (pingdotgg#5444)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* Prevent terminal loading flash (pingdotgg#5432)

* fix: reconnect faster after remote server updates (pingdotgg#5404)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: native subagent & workflow observability (pingdotgg#5219)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: respect time format for sidebar snooze (pingdotgg#4438)

* fix(web): calm one-row server update status and banner

The version-skew banner is no longer an amber warning: it reads
"Server update available" with the raw versions (unreadable for
nightlies) moved to a tooltip. The in-flight rail (Download/Install/
Resume) becomes a single status row, "Downloading…" then
"Restarting…", since the wire installing stage is a sub-second
launcher handoff and "resuming" meant nothing to most people.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): keep the managed tunnel across remote update restarts

Measured on a live update: the server was back in ~9s but stayed
unreachable for ~96s, because releasing the tunnel on shutdown forces
the replacement tunnel's hostname route through 1-2 minutes of edge
propagation. An update handoff always brings a server right back
(new version or rollback), so the tunnel is never orphaned; skip the
release when the launcher state file records a pending update. The
next boot respawns the connector from the stored config against the
same tunnel and is reachable as soon as it connects.

Co-Authored-By: Claude Fable 5 <[email protected]>

* test(server): use the launcher state writer in release tests

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): release the tunnel when an explicit stop interrupts an update

A pending update in the launcher state is not proof a replacement
server is coming: `t3 service uninstall` or `systemctl stop` during
the pending window also tears the server down, permanently. The
launcher now writes a stop marker before signalling its child on an
explicit stop and clears it on the next start; the shutdown tunnel
release keeps the tunnel only for pending updates without the marker.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): clean up interrupted update trials

* fix(server): order explicit service shutdown

* fix(web): make update version tooltips accessible

* fix(server): separate trial cleanup from handoff retention

* fix(server): drop superseded tool updates from snapshots

A tool.updated row is the in-flight snapshot of a call; once the call
completes, the tool.completed row carries the final state and both
clients fold every matching update into it. Shipping the updates buys
nothing: 47k such rows exist in one real database, and a single thread
carries 3,291 of them.

Filter them out of thread snapshots, mirroring the existing
context-window dedup. Matching is per turn and only against a LATER
completion, so a revert that discards the completing turn cannot leave
a call unrepresented, and a later update under the same identity (the
next call, still in flight) survives. Live events are untouched.

Rows are matched on the same identity the clients collapse by: an
explicit data.toolCallId when the adapter emits one, otherwise the
itemType/title/detail triple. No tool lifecycle row in the real db
carries a toolCallId, so the fallback does the work.

Co-Authored-By: Claude Fable 5 <[email protected]>

* docs(server): pin interleaved-collapse divergence as intentional with test

Bugbot flagged that clients collapse only adjacent lifecycle rows, so
dropping a superseded update separated by an interleaved parallel call
diverges from full-history rendering. Measured on a real database: 1.5%
of dropped rows (553/36,581), all pure in-flight state whose final result
the retained completion still shows, and zero dropped rows carry a
client-merged payload field their completion lacks (verified across all
49,515 update rows). Documents the tradeoff and adds a test pinning it.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(web): clarify auto permission fallback (pingdotgg#5431)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(acp): keep unknown approvals actionable (pingdotgg#5430)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(mobile): stop thread messages reading through pending cards (pingdotgg#5450)

Co-authored-by: Claude Opus 5 <[email protected]>

* fix(web): align composer inline chips with prompt text (pingdotgg#5495)

* fix(web): clear woke state on explicit thread actions (pingdotgg#5486)

* fix(server): skip origin fetch when creating worktrees in repos without an origin remote (pingdotgg#5556)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show remote environment for non-Git projects (pingdotgg#5555)

* fix(server): stopping a Claude thread no longer shows an ede_diagnostic error (pingdotgg#5557)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show one toast when snoozing threads in bulk (pingdotgg#5560)

* fix(server): let stopped threads settle immediately (pingdotgg#5553)

* feat: paginate thread loading with user-anchored turn windows (pingdotgg#5493)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: prevent reconnect loops during server stalls (pingdotgg#5561)

Co-authored-by: t3-turbo-simulation <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Theo Browne <[email protected]>

* fix(server): settle stopped Claude subagents (pingdotgg#5568)

* fix: scrolling up during a running thread no longer snaps back to the bottom (pingdotgg#5566)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)

Co-authored-by: Claude <[email protected]>

* test(server): catch client transfer regressions in CI (pingdotgg#5350)

* fix(web): stop the "requests are slow" warning from firing on every provider update (pingdotgg#5570)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): keep agent panel rows stable (pingdotgg#5569)

* docs: ship production T3 Connect public config in .env.example (pingdotgg#5573)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): per-device provider settings (pingdotgg#4479)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: add missing space before 'GitHub releases page' link on download page (pingdotgg#4511)

* fix(web): stop the sidebar "Working" label from pulsing (pingdotgg#5580)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(web): add modular theme library (pingdotgg#5226)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(dev): Improve instructions for --share (pingdotgg#5586)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): improve keyboard avoiding (pingdotgg#5451)

* fix(web): live background-work banner no longer hides behind the update notice (pingdotgg#5595)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): stabilize chat timeline positioning (pingdotgg#5449)

Co-authored-by: codex <[email protected]>

* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(web): thread actions from the chat header title (pingdotgg#5592)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): avoid iOS terminal reset on clear (pingdotgg#5440)

* fix(mobile): pad scroll views above Android nav bar (pingdotgg#5415)

* fix(mobile): keep Android chat text from showing through the composer (pingdotgg#5582)

* fix(mobile): repair Clerk auth navigation headers (pingdotgg#5140)

Co-authored-by: codex <[email protected]>

* Bump mobile app version to 1.0.2 (pingdotgg#5588)

* feat(web): click the pin icon to unpin a thread (pingdotgg#5578)

* fix(web): show the correctly matching shortcut in new thread button's tooltip (pingdotgg#5594)

* chore(release): prepare v0.0.32

* fix(mobile): reconnects no longer shift the thread list (pingdotgg#5372)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(web): drag pinned threads into your own order (pingdotgg#5581)

Co-authored-by: Claude Fable 5 <[email protected]>

* chore(ci): vouch StiensWout (pingdotgg#5637)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* feat(desktop): remember recently used sites in the Browser panel (pingdotgg#5270)

* chore: vouch chrisdeeming (pingdotgg#5641)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* feat(web): make sidebar artwork theme-aware (pingdotgg#5636)

* fix(web): reconnect the composer seam for remote non-Git projects (pingdotgg#5633)

* fix(web): show Stop button while input is pending (pingdotgg#5554)

* feat(web): fold plan mode and token-by-token output into Legacy features (pingdotgg#5664)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: sidebar v2 is now the default sidebar (pingdotgg#5672)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): stop PR status lookups amplifying GitHub rate limits (pingdotgg#5673)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): delay transient reconnect warnings (pingdotgg#5670)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(web): inherit terminal size in simple typography (pingdotgg#5628)

* fix(server): stop the reaper from silently killing live background subagents (pingdotgg#5677)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(desktop): zoom shortcuts no longer die when the preview browser has focus (pingdotgg#5691)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(mobile): one sheet for model and thread settings (pingdotgg#5625)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(usage): usage page reading provider transcripts across environments (pingdotgg#5684)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): usage chart no longer makes Claude look like the bigger spender (pingdotgg#5697)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): persist diff view mode (pingdotgg#5731)

* feat(web): show how many subagents are running at a glance (pingdotgg#5745)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): add missing cursor-pointer styling to dropdowns and interactive buttons (pingdotgg#5716)

* fix(server): stop Claude resume handshakes from completing turns that never ran (pingdotgg#5710)

Co-authored-by: t3-turbo-simulation <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>

* chore: vouch gfsaaser24 (pingdotgg#5761)

* chore: vouch saphid (pingdotgg#5763)

* fix(server): stop Codex threads with queued follow-ups (pingdotgg#5762)

* fix(web): usage page loses the cost quality panel, gains a back button (pingdotgg#5756)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(server): agents can now open the images you paste into chat (pingdotgg#5757)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): pinned reorder no longer reshuffles while writes land (pingdotgg#5767)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): overhaul project settings into a real settings page (pingdotgg#5768)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): usage totals no longer jump while devices report in (pingdotgg#5772)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): settle no longer leaves monitors and dev servers running (pingdotgg#5774)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: pick worktree or current checkout per project (pingdotgg#5766)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): sidebar rows show the branch again, not a truncated plan step (pingdotgg#5776)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(server): vp run migrate-dev-db seeds worktree dev dbs with real data (pingdotgg#5773)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): keep unsent drafts one click away in the sidebar (pingdotgg#5777)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): project icons can be chosen manually (pingdotgg#5775)

* fix(server): one greedy agent process no longer takes down the whole server (pingdotgg#5788)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* ci: label-gated hosted-web preview deploys (pingdotgg#5465)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add cross-platform mobile usage dashboard (pingdotgg#5743)

* fix repository agent context symlink

* fix hosted desktop build after upstream sync

* fix credentialed PWA build probe

* ci: use fork-supported runners

* fix(ci): resolve post-sync deterministic failures

* test(ci): align release assertions with upstream

* test(web): budget slow image compression case

* ci: size aggregate test budget for fork runners

* fix(server): restore atomic git ref snapshots

---------

Co-authored-by: jan <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Theo Browne <[email protected]>
Co-authored-by: codex <[email protected]>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <[email protected]>
Co-authored-by: wukko <[email protected]>
Co-authored-by: Wout Stiens <[email protected]>
Co-authored-by: Utkarsh Patil <[email protected]>
Co-authored-by: ohbentos <[email protected]>
Co-authored-by: Jake Leventhal <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Gabriel De Andrade <[email protected]>
Co-authored-by: Jono Kemball <[email protected]>
Co-authored-by: Max Katz <[email protected]>
Co-authored-by: maria <[email protected]>
Co-authored-by: Arham Amin <[email protected]>
Co-authored-by: Elaine Lyons <[email protected]>
Co-authored-by: Simone <[email protected]>
Co-authored-by: Max Anderson <[email protected]>
Co-authored-by: Aditya Vardhan Sharma <[email protected]>
Co-authored-by: Mike Olson <[email protected]>
Co-authored-by: shivam <[email protected]>
Co-authored-by: T3 Code Test <[email protected]>
Co-authored-by: Illia Panasenko <[email protected]>
Co-authored-by: Rodrigo Brechard <[email protected]>
Co-authored-by: Rodrigo Brechard <[email protected]>
Co-authored-by: naMqe <[email protected]>
Co-authored-by: Yukun Shan <[email protected]>
Co-authored-by: Rushikesh Gaikwad <[email protected]>
Co-authored-by: Bilal Bakr <[email protected]>
Co-authored-by: Fllip <[email protected]>
Co-authored-by: Hwanseo Choi <[email protected]>
Co-authored-by: Hugo Blom <[email protected]>
Co-authored-by: Carlos Rico-Ospina <[email protected]>
Co-authored-by: Gabe Fletcher <[email protected]>
Co-authored-by: t3-turbo-simulation <[email protected]>
Co-authored-by: Mateleo <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Jay Meistrich <[email protected]>
Co-authored-by: Justyn Leung <[email protected]>
Co-authored-by: Tyler Saari <[email protected]>
Co-authored-by: Pavlo Trinko <[email protected]>
Co-authored-by: Chris Deeming <[email protected]>
Co-authored-by: Henry Zhang <[email protected]>
Co-authored-by: Leonel Rivas <[email protected]>
Co-authored-by: wizzoapp[bot] <254688279+wizzoapp[bot]@users.noreply.github.com>
0xgeorgemathew added a commit to 0xgeorgemathew/t3trade that referenced this pull request Aug 13, 2026
* fix(web): settle button now works on hover, not just right-click (pingdotgg#4905)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(clients): disable add project while disconnected (pingdotgg#4834)

* fix(composer): hide default Codex service tier (pingdotgg#4784)

* docs: link iOS and Android app store downloads (pingdotgg#4902)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): align remote server update action (pingdotgg#4731)

* fix(connect): suggest a serve command that matches how you ran connect (pingdotgg#4897)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): stop shared content errors in Personal Team builds (pingdotgg#4943)

* perf(mobile): sends respond instantly, thread opens stop freezing (pingdotgg#4882)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show Codex fast mode as a bolt (pingdotgg#4947)

* docs: seed worktrees with a copy of real userdata instead of banning it (pingdotgg#4949)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): support dragged images in the composer (pingdotgg#4953)

* fix(mobile): stop long iOS threads from jumping while scrolling up (pingdotgg#4867)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(mobile): reconnect environments immediately on resume (pingdotgg#4878)

* feat(web): pasting a huge screenshot now compresses it instead of erroring (pingdotgg#4967)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): regenerate thread titles from sidebar (pingdotgg#4810)

* fix(web): show server update progress through reconnect (pingdotgg#4903)

* feat(search): find threads by conversation content (pingdotgg#4959)

* fix: marketing site Vercel builds no longer die after ~100 deploys (pingdotgg#4975)

Co-authored-by: Claude Fable 5 <[email protected]>

* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): server updates no longer look like warnings (pingdotgg#4992)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Check for mobile app updates on launch (pingdotgg#4958)

Co-authored-by: codex <[email protected]>

* fix(mobile): support pre-Liquid-Glass iOS bottom toolbar (pingdotgg#4984)

* fix(server): restore PR detection without HOME (pingdotgg#4985)

* fix(web): fill fast mode icon (pingdotgg#5004)

* fix: cache project favicons across web and mobile (pingdotgg#4767)

* perf(ci): cut stale runs and redundant setup (pingdotgg#4802)

* chore(mobile): bump app version to 1.0.1

Co-Authored-By: Claude Fable 5 <[email protected]>

* style(web): make scroll-to-end pill translucent (pingdotgg#5036)

* fix(ci): drop sparse-checkout from EAS workflows

actions/checkout implements sparse-checkout with --filter=blob:none, so
the runner repo is a partial clone missing the .repos/ blobs. eas-cli
archives the project via `git clone --depth 1 file://<workspace>`,
which upload-pack cannot serve from a partial clone and exits 128
(pingdotgg#4802 broke both EAS build workflows this way).

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(server): cache default branch name and origin existence across status refreshes (pingdotgg#5008)

* feat(shared): support shorthand (major-only) versions in the semver helpers (pingdotgg#5027)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): remove unnecessary photo library permission (pingdotgg#4929)

* fix(shared): lenient JSON parser deletes commas inside string values (pingdotgg#5025)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): default bare IP pairing to HTTP (pingdotgg#4990)

* fix(mobile): restore iOS Threads branding (pingdotgg#4862)

* chore: add mobile issue template area (pingdotgg#4895)

* fix(desktop): link release notes from the update downloaded toast (pingdotgg#4771)

Co-authored-by: Claude Opus 5 <[email protected]>

* fix(mobile): accept Android clipboard images in composer (pingdotgg#4836)

* fix(mobile): show the correct build channel in Android's Threads page header (pingdotgg#4861)

* fix(contracts): decode growing config unions forward-compatibly (pingdotgg#5055)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): repair the mobile showcase screenshots workflow (pingdotgg#5057)

* fix(ci): capture iPad App Store screenshots in landscape (pingdotgg#5065)

* fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm layout (pingdotgg#5066)

* feat(cli): `npx t3 pair` - generate QR code from a running server (pingdotgg#4955)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): render terminals with libghostty-vt (pingdotgg#4860)

Co-authored-by: Claude Fable 5 <[email protected]>

* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(mobile): add thread snoozing (pingdotgg#5053)

* feat(mobile): make settled threads collapsible (pingdotgg#5056)

* follow-up normalization after pingdotgg#4700. (pingdotgg#4498)

Co-authored-by: T3 Code Test <[email protected]>

* feat(web): search threads from the sidebar (pingdotgg#4769)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): add settings sidebar search (pingdotgg#4682)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: threads with open PRs no longer auto-settle (pingdotgg#5151)

* fix(server): bound thread catch-up replay and stop full-DB snapshot hydration (pingdotgg#5147)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): make remote updates rollback-safe (pingdotgg#5181)

* fix(web): stop settle controls overlapping the status label (pingdotgg#4574)

* fix: normalize app icon glyph sizing (pingdotgg#5202)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(server): surface cloudflared FTL/PNC relay logs as warnings, not debug (pingdotgg#5076)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)

Co-authored-by: Claude <[email protected]>

* feat: fold legacy models into separate menus (pingdotgg#5190)

* fix(desktop): claim the t3code:// scheme default on Linux at startup (pingdotgg#5054)

* fix(web): polish interface spacing (pingdotgg#5252)

* fix(desktop): Niri/Hyprland - Linux secret storage backend (pingdotgg#2916)

Co-authored-by: Julius Marminge <[email protected]>

* fix(web): match loading screen to dark theme (pingdotgg#5303)

* fix(web): blink the terminal cursor again (pingdotgg#5314)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(terminal): protect held Ctrl/Cmd+W close shortcut (pingdotgg#5322)

* fix(server): strip replayable terminal queries from history (pingdotgg#5319)

* fix(contracts): decode ServerProviders forward-compatibly (pingdotgg#5327)

Co-authored-by: Rodrigo Brechard <[email protected]>

* fix(web): simplify chat code blocks (pingdotgg#5301)

* fix(web): align multiline error alert controls (pingdotgg#5304)

* Upgrade Effect to beta.103 (pingdotgg#5331)

* fix(web): increase tooltip z-index to overlay popovers and menus (pingdotgg#5326)

* fix(server): use a Cursor todo's title when its content is blank (pingdotgg#5073)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(ssh): isolate managed tunnel processes (pingdotgg#4347)

* fix(server): scrub AppImage XDG_DATA_DIRS and GSETTINGS_SCHEMA_DIR from terminals (pingdotgg#5075)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(mobile): show correct provider icons for Grok, Cursor, and OpenCode (pingdotgg#4586)

* fix(web): stop the chat timeline reading through the provider status banner (pingdotgg#5353)

* fix(desktop,web): contain renderer memory growth and recover from renderer OOM crashes (pingdotgg#5148)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): generate durable thread titles (pingdotgg#5357)

* fix(web): better right panel (new diffs styling) (pingdotgg#5260)

* fix(server): keep regenerated titles on topic (pingdotgg#5365)

* refactor(server): make title prompts plaintext (pingdotgg#5368)

* feat(web): configurable fonts and sizes under Settings → Appearance (pingdotgg#5103)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(desktop,web): improve in-app browser shortcuts and URL behavior (pingdotgg#4703)

* fix(web): prevent legacy model picker layout shift (pingdotgg#5349)

* fix(server): allow remote updates with database migrations (pingdotgg#5374)

* fix(mcp): unblock Kimi models in OpenCode with preview tools (pingdotgg#5128)

* fix(web): clear main branch lint warnings (pingdotgg#5384)

* fix(mobile): preserve grouped project workspaces (pingdotgg#4642)

Co-authored-by: T3 Code Test <[email protected]>

* fix(mobile): prevent Android thread search crash (pingdotgg#5386)

* fix(web): truncate long project switcher names (pingdotgg#5348)

* fix(mobile): avoid double dividers between thread sections (pingdotgg#5391)

Co-authored-by: T3 Code Test <[email protected]>

* fix(web): keep the composer command menu anchored to the composer (pingdotgg#5336)

* fix(web): restore terminal link hover styles (pingdotgg#5382)

* fix(ci): isolate releases from shared API rate limits (pingdotgg#5394)

* fix(web): keep model picker shortcuts in sync (pingdotgg#5400)

* fix(web): keep terminal font settings reliable (pingdotgg#5397)

* Enrich terminal font previews (pingdotgg#5428)

* fix(web): preserve terminal font size when splitting (pingdotgg#5444)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* Prevent terminal loading flash (pingdotgg#5432)

* fix: reconnect faster after remote server updates (pingdotgg#5404)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: native subagent & workflow observability (pingdotgg#5219)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: respect time format for sidebar snooze (pingdotgg#4438)

* fix(web): calm one-row server update status and banner

The version-skew banner is no longer an amber warning: it reads
"Server update available" with the raw versions (unreadable for
nightlies) moved to a tooltip. The in-flight rail (Download/Install/
Resume) becomes a single status row, "Downloading…" then
"Restarting…", since the wire installing stage is a sub-second
launcher handoff and "resuming" meant nothing to most people.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): keep the managed tunnel across remote update restarts

Measured on a live update: the server was back in ~9s but stayed
unreachable for ~96s, because releasing the tunnel on shutdown forces
the replacement tunnel's hostname route through 1-2 minutes of edge
propagation. An update handoff always brings a server right back
(new version or rollback), so the tunnel is never orphaned; skip the
release when the launcher state file records a pending update. The
next boot respawns the connector from the stored config against the
same tunnel and is reachable as soon as it connects.

Co-Authored-By: Claude Fable 5 <[email protected]>

* test(server): use the launcher state writer in release tests

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): release the tunnel when an explicit stop interrupts an update

A pending update in the launcher state is not proof a replacement
server is coming: `t3 service uninstall` or `systemctl stop` during
the pending window also tears the server down, permanently. The
launcher now writes a stop marker before signalling its child on an
explicit stop and clears it on the next start; the shutdown tunnel
release keeps the tunnel only for pending updates without the marker.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(server): clean up interrupted update trials

* fix(server): order explicit service shutdown

* fix(web): make update version tooltips accessible

* fix(server): separate trial cleanup from handoff retention

* fix(server): drop superseded tool updates from snapshots

A tool.updated row is the in-flight snapshot of a call; once the call
completes, the tool.completed row carries the final state and both
clients fold every matching update into it. Shipping the updates buys
nothing: 47k such rows exist in one real database, and a single thread
carries 3,291 of them.

Filter them out of thread snapshots, mirroring the existing
context-window dedup. Matching is per turn and only against a LATER
completion, so a revert that discards the completing turn cannot leave
a call unrepresented, and a later update under the same identity (the
next call, still in flight) survives. Live events are untouched.

Rows are matched on the same identity the clients collapse by: an
explicit data.toolCallId when the adapter emits one, otherwise the
itemType/title/detail triple. No tool lifecycle row in the real db
carries a toolCallId, so the fallback does the work.

Co-Authored-By: Claude Fable 5 <[email protected]>

* docs(server): pin interleaved-collapse divergence as intentional with test

Bugbot flagged that clients collapse only adjacent lifecycle rows, so
dropping a superseded update separated by an interleaved parallel call
diverges from full-history rendering. Measured on a real database: 1.5%
of dropped rows (553/36,581), all pure in-flight state whose final result
the retained completion still shows, and zero dropped rows carry a
client-merged payload field their completion lacks (verified across all
49,515 update rows). Documents the tradeoff and adds a test pinning it.

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(trading): a covered position is not deaf, and does not need a metronome

A PnL line is a directional level in dollars, and a confirmed reduce-only
stop is a level the exchange enforces. Coverage counted neither, so the
observed mission — short, target armed, stop resting — was judged deaf and
woken every three bars to conclude "hold".

Coverage now reads pnl_above as the winning side and pnl_below/pnl_giveback
as the losing side (direction from the position's sign), and a fully
confirmed stop as losing-side coverage. A position covered on both sides
gets the slow sanity backstop (10x the tight floor, clamped [15m, 2h]) — a
thesis-drift check — instead of the tight floor, which stays for the
genuinely deaf case it was built for.

Co-Authored-By: Claude Opus 5 <[email protected]>

* feat(trading): a waiting plan's unarmed trigger levels come back on the wake

A flat mission is allowed to wait, but waiting is a decision with content:
"come back if price reaches 1899" is a trigger, and a trigger that lives
only in prose wakes nothing. The runtime does not arm it — predicates come
from MarketWatch, never from a condition's description — so it reports the
gap instead. A flat, waiting wakeup now carries `unarmedEntryConditions`:
the entry levels the plan named with no watch within 10 bps of them.

The tool descriptions learned the hierarchy to match (prefer condition
watches; arm a waiting plan's levels in the turn you publish it), and the
toolkit's char budget was paid for out of existing wordiness.

Co-Authored-By: Claude Opus 5 <[email protected]>

* feat(trading): a stop may be trailed, but only inside the envelope it was approved with

`modify_stop` puts the stop anywhere on the losing side of the mark, and an
unconfirmed replacement escalates to a forced close — so routine trailing was
the one thing the primitive was least suited to. `trading_adjust_stop` is the
bounded version: the same replaceProtection path, with the policy in front of
it.

The rules the server enforces, none negotiable by prompt: risk never grows past
the entry's approved stop; a step is at most min(0.5xATR, 25% of the stop
distance); the agent's own ATR is cross-checked against the server's; the stop
stays outside max(2xhalf-spread, 0.35xATR) and no further than halfway from
entry to target; a stop past entry never crosses back; one adjustment per three
bars and eight per position.

The policy is pure and pinned by its own tests. An accepted move goes out as an
ordinary modify_stop intent, so the confirm-before-cancel sequence and its
§17.5 escalation are the ones every stop move already takes, and lands as
`trading.mission.stop-adjusted` with a durable row the chart's step-line can
later be drawn from.

The toolkit's description budget moves from 10,000 to 11,200: the twentieth
tool pays for itself, since an agent that cannot read the eight refusal codes
just retries the same refused move.

Co-Authored-By: Claude Opus 5 <[email protected]>

* feat(trading): the wake that arrives one ATR before the exchange decides

`trading_adjust_stop` gave the harness a bounded way to move the stop; nothing
gave it the moment to use it. A protected position's next scheduled event was
the stop itself, which is the exchange taking the decision rather than the
agent making one.

The proximity watch is that moment: a `price_cross` at `stop + 1.0xATR` for a
long, mirrored for a short, `armedReason: "stop_proximity"`. It is armed from
the two places a confirmed stop comes into existence -- `protectIncrease` at
entry and `modifyStop` on every replacement -- so the level always follows the
stop actually resting. Re-arming goes through `replacesWatchId`, so a mission
never carries more than one and the old level dies in the same transaction the
new one is written in.

The reactor was already the only place that sees a confirmed stop, and it
already holds the gateway the ATR is measured with; reading the strategy's
primary timeframe off its stored JSON keeps its layer exactly as wide as it
was, which is why `ensureNotDeaf` -- the other candidate, and the one with no
market data at all -- is left alone.

Arming is best-effort: it runs after the protection it describes is confirmed,
and a position with a live stop and no proximity watch is protected, just less
forewarned. It never fails the execution that armed it. A level already through
the mark arms nothing and cancels any stale one, since a watch that was true
before it was written is an immediate wake, not coverage.

Co-Authored-By: Claude Opus 5 <[email protected]>

* feat(web): the schedule a mission is already keeping, made visible

Lands two threads of work in one commit because they were written
interleaved in the same three files and cannot be honestly separated
after the fact:

- plan 23's web follow-through: chart condition and fill-marker geometry,
  position-read freshness (current/delayed/stale) with its banner, the
  price and review charts rebuilt on the shared geometry, and the thread
  panel's run rows.
- plan 24 phase B (§3): the "Up next" strip — deriveUpNextItems turns the
  mission's own watches, protection, and in-flight executions into one
  ordered list of future events, rendered as UpNextPill rows above the
  composer. No new RPCs and no new server state; every item is derived
  from the read model the panel already holds.

The server change is the projection carrying the fields the strip reads.

Co-Authored-By: Claude Opus 5 <[email protected]>

* feat(web): a pill you can click, and the rule it was talking about

The "Up next" strip names price levels the chart is already drawing, but
the two surfaces had no link: finding "wake @ 1899" among four unlabelled
rules was left to the eye. Clicking a pill now lights up its level.

The join is findLevelAtPrice, in the geometry module where the levels
live. It compares with a relative tolerance, because a PnL watch is
divided back into a price on both paths and the two results are equal
only up to float drift. It does not snap to a merely nearest level: the
strip can name a price the chart's domain does not reach, and lighting
the closest rule would point at a price nobody clicked. That case
flashes nothing.

A nonce keys the overlay so a second click on the same pill flashes
again, and the highlight clears itself before the next mission poll — a
rule that outlived the click would read as chart state rather than as an
answer. Pills with no price on a chart stay plain spans.

Co-Authored-By: Claude Opus 5 <[email protected]>

* feat(web): the whole reassessment queue on the axis, not just its next item

The chart drew one future tick — the nearest scheduled reassessment, which is
the same appointment the header already counts down. A mission that has
republished a few times holds several at once, and the shape of that queue is
the reading: three minutes apart and all armed by the staleness floor is a loop
idling, one at the funding timestamp is a plan waiting.

deriveChartTimeMarkers returns every armed reassessment, soonest first, capped
at five with the last slot collapsing into a +N tick at the furthest moment.
Only the nearest carries a caption — five captions in one gutter collide — and
staleness-floor ticks are drawn muted and sparser than the ones the harness
chose, so the backstop never looks like an intention.

Co-Authored-By: Claude Opus 5 <[email protected]>

* feat(trading): the mission's history, joined once so no client has to

The read model was entirely current state: the watches armed now, the position
held now, the stop resting now. None of it can say the stop walked up behind a
winner in four steps, or that the last five wakes were the staleness floor
rearming itself — and those are the readings the chart's past axis and the
thread's wake rows exist for.

missionTimeline[] on OrchestrationTradingMission: newest-first, capped at 50,
joined at read time from the three tables that already keep the facts —
trading_harness_runs for wakes, trading_stop_adjustments (migration 050, landed
with the adjust-stop tool) for stop steps, momentum_strategy_versions for
publishes. No migration, and no history copied into the projection row, for the
same reason the execution surfaces are joined rather than stored: the row must
stay rebuildable from the domain tables alone.

Each source is queried with its own limit before the merge, so a mission that
woke two hundred times cannot crowd out its four stop steps. A run that never
started is filed under when it was created — the question the axis answers is
when the mission was woken, not when a provider got round to it — and a failed
run says so in its label, because that is a turn the mission was owed and did
not get.

Co-Authored-By: Claude Opus 5 <[email protected]>

* feat(web): the mission's turns, as a rug along the bottom of its own chart

The axis carried the future — a scheduled reassessment standing in the gutter —
and nothing of the past. So a chart could show a mission that had woken eleven
times in twenty minutes and look identical to one that had woken once, and the
question the operator actually has, "has this loop been doing anything", had no
answer on the surface built to answer it.

`missionTimeline` from the projection becomes a rug of ticks along the bottom
edge: wakes coloured by cause, publishes in foreground, stop moves and failed
runs in loss-red. A rug rather than full-height rules on purpose — twenty
verticals would fence the price line in behind the very thing they annotate,
and the shape of the trade is meant to be the only saturated thing on screen.

Capped at twenty, dropping the oldest: the projection sends newest-first, so a
rug trimmed from the front would stop before the events that just happened.
Anything older than the window's first candle is dropped rather than pinned to
the left edge, the same rule the fill markers follow.

Co-Authored-By: Claude Opus 5 <[email protected]>

* fix(web): clarify auto permission fallback (pingdotgg#5431)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(acp): keep unknown approvals actionable (pingdotgg#5430)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(mobile): stop thread messages reading through pending cards (pingdotgg#5450)

Co-authored-by: Claude Opus 5 <[email protected]>

* fix(web): align composer inline chips with prompt text (pingdotgg#5495)

* fix(web): clear woke state on explicit thread actions (pingdotgg#5486)

* fix(server): skip origin fetch when creating worktrees in repos without an origin remote (pingdotgg#5556)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show remote environment for non-Git projects (pingdotgg#5555)

* fix(server): stopping a Claude thread no longer shows an ede_diagnostic error (pingdotgg#5557)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): show one toast when snoozing threads in bulk (pingdotgg#5560)

* fix(server): let stopped threads settle immediately (pingdotgg#5553)

* feat: paginate thread loading with user-anchored turn windows (pingdotgg#5493)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: prevent reconnect loops during server stalls (pingdotgg#5561)

Co-authored-by: t3-turbo-simulation <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Theo Browne <[email protected]>

* fix(server): settle stopped Claude subagents (pingdotgg#5568)

* fix: scrolling up during a running thread no longer snaps back to the bottom (pingdotgg#5566)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)

Co-authored-by: Claude <[email protected]>

* test(server): catch client transfer regressions in CI (pingdotgg#5350)

* fix(web): stop the "requests are slow" warning from firing on every provider update (pingdotgg#5570)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): keep agent panel rows stable (pingdotgg#5569)

* docs: ship production T3 Connect public config in .env.example (pingdotgg#5573)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): per-device provider settings (pingdotgg#4479)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix: add missing space before 'GitHub releases page' link on download page (pingdotgg#4511)

* fix(web): stop the sidebar "Working" label from pulsing (pingdotgg#5580)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(web): add modular theme library (pingdotgg#5226)

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)

Co-authored-by: Claude Fable 5 <[email protected]>

* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(dev): Improve instructions for --share (pingdotgg#5586)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): improve keyboard avoiding (pingdotgg#5451)

* fix(web): live background-work banner no longer hides behind the update notice (pingdotgg#5595)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): stabilize chat timeline positioning (pingdotgg#5449)

Co-authored-by: codex <[email protected]>

* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(web): thread actions from the chat header title (pingdotgg#5592)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(mobile): avoid iOS terminal reset on clear (pingdotgg#5440)

* fix(mobile): pad scroll views above Android nav bar (pingdotgg#5415)

* fix(mobile): keep Android chat text from showing through the composer (pingdotgg#5582)

* fix(mobile): repair Clerk auth navigation headers (pingdotgg#5140)

Co-authored-by: codex <[email protected]>

* Bump mobile app version to 1.0.2 (pingdotgg#5588)

* feat(web): click the pin icon to unpin a thread (pingdotgg#5578)

* fix(web): show the correctly matching shortcut in new thread button's tooltip (pingdotgg#5594)

* chore(release): prepare v0.0.32

* fix(mobile): reconnects no longer shift the thread list (pingdotgg#5372)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(web): drag pinned threads into your own order (pingdotgg#5581)

Co-authored-by: Claude Fable 5 <[email protected]>

* chore(ci): vouch StiensWout (pingdotgg#5637)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* feat(desktop): remember recently used sites in the Browser panel (pingdotgg#5270)

* chore: vouch chrisdeeming (pingdotgg#5641)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* feat(web): make sidebar artwork theme-aware (pingdotgg#5636)

* fix(web): reconnect the composer seam for remote non-Git projects (pingdotgg#5633)

* fix(web): show Stop button while input is pending (pingdotgg#5554)

* feat(web): fold plan mode and token-by-token output into Legacy features (pingdotgg#5664)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: sidebar v2 is now the default sidebar (pingdotgg#5672)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): stop PR status lookups amplifying GitHub rate limits (pingdotgg#5673)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): delay transient reconnect warnings (pingdotgg#5670)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(web): inherit terminal size in simple typography (pingdotgg#5628)

* fix(server): stop the reaper from silently killing live background subagents (pingdotgg#5677)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(desktop): zoom shortcuts no longer die when the preview browser has focus (pingdotgg#5691)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(mobile): one sheet for model and thread settings (pingdotgg#5625)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(usage): usage page reading provider transcripts across environments (pingdotgg#5684)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): usage chart no longer makes Claude look like the bigger spender (pingdotgg#5697)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): persist diff view mode (pingdotgg#5731)

* feat(web): show how many subagents are running at a glance (pingdotgg#5745)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): add missing cursor-pointer styling to dropdowns and interactive buttons (pingdotgg#5716)

* fix(server): stop Claude resume handshakes from completing turns that never ran (pingdotgg#5710)

Co-authored-by: t3-turbo-simulation <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>

* chore: vouch gfsaaser24 (pingdotgg#5761)

* chore: vouch saphid (pingdotgg#5763)

* fix(server): stop Codex threads with queued follow-ups (pingdotgg#5762)

* fix(web): usage page loses the cost quality panel, gains a back button (pingdotgg#5756)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(server): agents can now open the images you paste into chat (pingdotgg#5757)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): pinned reorder no longer reshuffles while writes land (pingdotgg#5767)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): overhaul project settings into a real settings page (pingdotgg#5768)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): usage totals no longer jump while devices report in (pingdotgg#5772)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): settle no longer leaves monitors and dev servers running (pingdotgg#5774)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat: pick worktree or current checkout per project (pingdotgg#5766)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(web): sidebar rows show the branch again, not a truncated plan step (pingdotgg#5776)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* feat(server): vp run migrate-dev-db seeds worktree dev dbs with real data (pingdotgg#5773)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): keep unsent drafts one click away in the sidebar (pingdotgg#5777)

Co-authored-by: Claude Fable 5 <[email protected]>

* feat(web): project icons can be chosen manually (pingdotgg#5775)

* fix(server): one greedy agent process no longer takes down the whole server (pingdotgg#5788)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* ci: label-gated hosted-web preview deploys (pingdotgg#5465)

Co-authored-by: Claude Fable 5 <[email protected]>

* Add cross-platform mobile usage dashboard (pingdotgg#5743)

* fix(web): preserve desktop route during Clerk auth (pingdotgg#5770)

* fix(web): match create theme and import theme buttons to the standard outline style (pingdotgg#5860)

* fix(server): favicon resolution no longer pins the event loop (pingdotgg#5538)

* fix(shared): bound the file-link label so bracket runs stop rescanning (pingdotgg#5782)

Co-authored-by: tsouth89 <[email protected]>
Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): thread title button no longer eats the drag area (pingdotgg#5857)

* fix(web): unify usage page chrome (pingdotgg#5823)

* fix(shell): add ~/.local/bin to the Windows CLI resolver so native-installed providers are found (pingdotgg#5074)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

* fix(web): match settings search shortcut styling to command palette's (pingdotgg#5841)

* fix(mobile): long-pressing a thread row no longer navigates into the thread (pingdotgg#5901)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): usage no longer double-counts forked Codex sessions (pingdotgg#5887)

Co-authored-by: Claude Fable 5 <[email protected]>

* fix(server): sandbox user-provided SVGs (pingdotgg#5916)

* fix(web): match usage titlebar text styling (pingdotgg#5897)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* Move project settings to contextual project routes (pingdotgg#5923)

* Preserve back navigation when opening settings (pingdotgg#5930)

Co-authored-by: codex <[email protected]>

* Automate production mobile EAS releases (pingdotgg#5609)

* Add settings and usage breadcrumbs (pingdotgg#5929)

* fix(web): correct model picker trigger padding (pingdotgg#5935)

* fix(web): show worktree icon in sidebar v2 (pingdotgg#5909)

* fix(web): enable restore defaults after theme mix changes (pingdotgg#5928)

Co-authored-by: Simone <[email protected]>

* fix(web): trait menu closes after you pick a level (pingdotgg#5879)

Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(web): align project name with headline (pingdotgg#5864)

* fix(web): update pills use readable theme foregrounds (pingdotgg#5938)

* fix(web): use themed confirmation dialogs (pingdotgg#5624)

* fix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)

* fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)

* fix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)

Co-authored-by: Rodrigo Brechard <[email protected]>
Co-authored-by: Claude Opus 5 (1M context) <[email protected]>

* fix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)

Co-authored-by: codex <[email protected]>

* feat(trading): entry quotes, exits, and the receipts that make a run provable

Adds the execution-harness pieces the trading run was missing across
contracts, server, and web:

contracts: decision, exit, policy, quote, recovery, replay, and
setupEvidence modules in packages/trading-contracts, with tests.
server: TradingQuoteService, TradingExitService, TradingRunTelemetry,
TradingExecutionReceipts, TradingExecutionSequence, TradingReplayFixtures,
RetryTransient, TradingSessionProfile; migrations 051-053 for run
decisions, entry quotes, and execution sequences.
web: TradingAssetPicker and a MissionLivePanel state refactor; drops the
now-unused missionLockedProviderMessages path.

* chore(deps): bump packageManager to pnpm 11.21.0, regenerate lockfile

* docs(upstream): backfill PATCH_LEDGER for plans 21-25; ignore local working dirs

* test(server): follow trading_execute's quote-id shape and use a namespaced fs import

The coercion test still asserted the pre-quote trading_execute schema, which
d1a245a replaced with {missionId, quoteId}; its numeric fields now live on
trading_quote_entry, so the nested-number case moves there and execute keeps a
pass-through case. Also satisfies namespace-node-imports in the profile test.
Both were red before the v0.0.33 sync started, so the sync stays attributable.

* docs(upstream): record the v0.0.33 baseline and every seam the sync touched

The renumber policy is now exercised rather than proposed: upstream's six new
migrations took fork ids 054-059, and the ledger says why the test bounds move
with them. Also records the seams that only appear once upstream deletes a file
the fork edited (SidebarV2), and the two Effect beta.103 API breaks.

---------

Co-authored-by: Theo Browne <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Wout Stiens <[email protected]>
Co-authored-by: Max Katz <[email protected]>
Co-authored-by: Jake Leventhal <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>
Co-authored-by: Gabriel De Andrade <[email protected]>
Co-authored-by: maria <[email protected]>
Co-authored-by: Utkarsh Patil <[email protected]>
Co-authored-by: Arham Amin <[email protected]>
Co-authored-by: Elaine Lyons <[email protected]>
Co-authored-by: Simone <[email protected]>
Co-authored-by: Alex <[email protected]>
Co-authored-by: Max Anderson <[email protected]>
Co-authored-by: Simon Doba <[email protected]>
Co-authored-by: Aditya Vardhan Sharma <[email protected]>
Co-authored-by: Mike Olson <[email protected]>
Co-authored-by: shivam <[email protected]>
Co-authored-by: T3 Code Test <[email protected]>
Co-authored-by: Illia Panasenko <[email protected]>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Rodrigo Brechard <[email protected]>
Co-authored-by: Rodrigo Brechard <[email protected]>
Co-authored-by: naMqe <[email protected]>
Co-authored-by: Yukun Shan <[email protected]>
Co-authored-by: Rushikesh Gaikwad <[email protected]>
Co-authored-by: Bilal Bakr <[email protected]>
Co-authored-by: Fllip <[email protected]>
Co-authored-by: Hwanseo Choi <[email protected]>
Co-authored-by: Hugo Blom <[email protected]>
Co-authored-by: Carlos Rico-Ospina <[email protected]>
Co-authored-by: Gabe Fletcher <[email protected]>
Co-authored-by: t3-turbo-simulation <[email protected]>
Co-authored-by: Mateleo <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Jay Meistrich <[email protected]>
Co-authored-by: Justyn Leung <[email protected]>
Co-authored-by: Tyler Saari <[email protected]>
Co-authored-by: Pavlo Trinko <[email protected]>
Co-authored-by: Chris Deeming <[email protected]>
Co-authored-by: Henry Zhang <[email protected]>
Co-authored-by: Leonel Rivas <[email protected]>
Co-authored-by: Robert Soriano <[email protected]>
Co-authored-by: Matt Urenovich <[email protected]>
Co-authored-by: Tyler <[email protected]>
Co-authored-by: tsouth89 <[email protected]>
Co-authored-by: nathangerday <[email protected]>
Co-authored-by: Ellie Gummere <[email protected]>
Co-authored-by: Tristan Knight <[email protected]>
Co-authored-by: Simone <[email protected]>
Co-authored-by: Carter Smith <[email protected]>
Co-authored-by: Mina Yacoub <[email protected]>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ changed lines (additions + deletions). vouch:trusted Author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants