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

Merged
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation
Jul 26, 2026
Merged

feat(dev): keep worktree dev state isolated on T3 Code dev servers#4555
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation

Conversation

@t3dotgg

@t3dotggt3dotgg commented Jul 26, 2026

Copy link
Copy Markdown
Member

Note

Dev mode overhaul — PR 1 of 3. The stack moves from worktree-isolated dev statesingle-origin and Tailscale sharingpairing and seed utilities. This PR establishes the foundation; #4556 is stacked on it.

What

  • Resolve linked worktree roots and default development state to that worktree’s ignored .t3 directory.
  • Keep an explicit --home-dir authoritative while preventing an ambient T3CODE_HOME from selecting the installed app’s live data.
  • Document and test the resolution rules.

Why

A dev command launched from a linked worktree could otherwise inherit the shared application home and write development state into the database used by the installed app.

Impact

This is the foundational slice of the dev-server overhaul. It changes only worktree state isolation and is the base for the two follow-up PRs.

Verification

  • vp test run packages/shared/src/devHome.test.ts scripts/dev-runner.test.ts (32 tests)
  • targeted lint
  • vp run --filter=@t3tools/shared typecheck

Note

Isolate dev state to the linked git worktree's .t3 directory by default

  • Adds resolveGitWorktreePath and resolveWorktreeT3Home utilities in packages/shared/src/devHome.ts to detect when the process runs inside a linked git worktree and derive its local .t3 path.
  • Updates scripts/dev-runner.ts to apply a new precedence order: explicit --home-dir > worktree-local <worktree>/.t3 > ambient T3CODE_HOME. Blank --home-dir is treated as unset.
  • Removes the implicit T3CODE_HOME fallback from the --home-dir CLI flag; absence of the flag now delegates to the new precedence logic.
  • Updates docs and AGENTS.md to document the new precedence rules, including the note that submodules are not worktrees.
  • Behavioral Change: when running inside a linked worktree, the dev server now ignores T3CODE_HOME unless --home-dir is absent and no worktree .t3 is detected.

Macroscope summarized 6404fc1.


Note

Medium Risk
Changes which SQLite database dev commands use in worktrees (behavioral shift away from shared/live userdata); logic is well-tested but mis-detection could still point at the wrong home.

Overview
Linked git worktrees now get an isolated dev data directory at <worktree>/.t3 (userdata under <worktree>/.t3/userdata) when you run vp run dev, so feature work does not inherit the installed app’s shared home.

The dev runner resolves home in order: explicit --home-dir (whitespace-only counts as unset), then worktree .t3, then ambient T3CODE_HOME. Worktree detection walks up from cwd, treats a .gitfile whose gitdir: ends in worktrees/<name> as a linked worktree (not main checkout, submodules, or invalid pointers), and is implemented in new @t3tools/shared/devHome helpers with tests. createDevRunnerEnv no longer merges ambient T3CODE_HOME when no explicit base dir is passed; precedence is applied in runDevRunnerWithInput using injectable HostProcessWorkingDirectory. Agent docs and test-t3-app / scripts reference reflect the new default and pairing/SQLite paths for worktree-local state.

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

Summary by CodeRabbit

  • New Features

    • Development environments in linked worktrees now use a worktree-local .t3 directory by default.
    • Added clear precedence for development home selection: explicit --home-dir, worktree .t3, then ambient configuration.
    • Added a shared development-home export for tooling integrations.
  • Documentation

    • Clarified development server setup, state storage, isolation, and pairing-token recovery guidance.
  • Tests

    • Added coverage for worktree detection and development-home precedence across repository layouts and configuration scenarios.

@coderabbitai

coderabbitaiBot commented Jul 26, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Title check✅ PassedThe title clearly matches the main change: isolating worktree dev state on T3 dev servers.
Description check✅ PassedThe PR description covers what changed, why, and verification; the missing checklist/UI section is non-critical here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/dev-worktree-isolation

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-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
@t3dotgg
t3dotgg marked this pull request as ready for review July 26, 2026 05:21
Comment threadpackages/shared/src/devHome.ts Outdated
Comment threadscripts/dev-runner.ts Outdated

@cursorcursorBot 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 2 potential issues.

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 2654583. Configure here.

Comment threadscripts/dev-runner.ts Outdated
Comment threadpackages/shared/src/devHome.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes runtime behavior by modifying how dev servers resolve their home directory, with worktree-local .t3 now outranking ambient T3CODE_HOME. While well-tested and scoped to dev scenarios, this precedence change warrants human review.

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

A submodule's `.git` is also a file, so the file-vs-directory check alone
classified every submodule as a linked worktree and handed it a
worktree-local `.t3`. Read the `gitdir:` pointer and require it to land in
`.git/worktrees` (compared as path segments, not a substring).
Resolve cwd through a HostProcessWorkingDirectory reference rather than
calling process.cwd() directly, so the precedence chain is testable.
Add tests for the submodule and malformed-`.git`-file cases, plus
end-to-end coverage of all four home-precedence outcomes, which had no
test before. Document that worktree state lands in `.t3/userdata`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@t3dotgg

Copy link
Copy Markdown
MemberAuthor

Reviewed and pushed fixes in 2a3ef8c.

Findings

1. Submodules were misclassified as worktrees (correctness bug)

resolveGitWorktreePath treated any .gitfile as a linked worktree. But a git submodule's .git is also a file — it just points somewhere else:

worktree: gitdir: /repo/.git/worktrees/x
submodule: gitdir: ../.git/modules/sub

Verified against a real submodule, the helper returned the submodule root, so vp run dev from inside one would silently write state to <submodule>/.t3 — a directory that is not gitignored by the parent repo's .gitignore. Fixed by parsing the gitdir: pointer and requiring .git/worktrees as path segments (not a substring, so a directory legitimately named worktrees can't false-positive). A malformed or unreadable .git file now falls through to the normal precedence rather than claiming a worktree.

2. process.cwd() read directly, making precedence untestable

runDevRunnerWithInput called process.cwd() inline while reading every other ambient input through a Context.Reference. That's why the precedence chain — the actual point of this PR — had zero test coverage: there was no way to vary cwd. Added HostProcessWorkingDirectory alongside the existing HostProcessEnvironment/HostProcessPlatform references and routed the call through it.

3. Precedence chain had no end-to-end test

devHome.test.ts covered the helper and createDevRunnerEnv covered env construction, but nothing tested that they compose into the documented --home-dir > worktree .t3 > T3CODE_HOME > default order. Added four tests asserting the T3CODE_HOME actually handed to the spawned process for each branch.

4. Stale doc claim

test-t3-app/SKILL.md said the <base>/dev fallback applies to "an implicit dev home." A worktree .t3 is passed as an explicit base dir, so it resolves to .t3/userdata, not .t3/dev — worth stating since the skill tells agents where to find state.sqlite.

Verification

  • vp test run packages/shared scripts — 479 passed (38 in the two touched files, up from 32)
  • vp run --filter=@t3tools/shared typecheck, scripts typecheck — clean
  • lint on all touched files — clean
  • Manual --dry-run across all four paths:
cwdambient T3CODE_HOMEflagresolved baseDir
worktreeset<worktree>/.t3
worktreeset--home-dirthe flag
main checkoutset/home/theo/.t3
submoduleset/home/theo/.t3

The core design is right and the ambient-T3CODE_HOME hazard it addresses is real — I hit exactly that setup locally (T3CODE_HOME=/home/theo/.t3), where the old behavior would have pointed a worktree dev server at the installed app's live userdata database.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
Comment threadpackages/shared/src/devHome.ts Outdated
The `.git/worktrees` segment check rejected worktrees whose common dir is
not named `.git`. A worktree of a bare repo points at
`<repo>.git/worktrees/<name>`, and $GIT_COMMON_DIR can be anything. Git
always uses the `worktrees/<name>` tail, so match on that instead;
`<git-dir>/modules/<name>` still fails it.
A blank `--home-dir` also counted as a selection under `??`, skipping the
worktree default and landing on the shared home — the outcome this
precedence exists to prevent. Trim before choosing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/shared/src/devHome.ts`:
- Around line 28-33: Update pointsAtLinkedWorktree() to validate the .git
pointer file using only its first meaningful line, rejecting files with
arbitrary content before a gitdir: declaration instead of accepting later lines.
Preserve valid linked-worktree resolution and add a regression fixture covering
junk followed by a gitdir: line.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b5bb3d2-5c90-4ecb-a211-9582b446b766

📥 Commits

Reviewing files that changed from the base of the PR and between 5719e8a and 6404fc1.

📒 Files selected for processing (9)
  • .agents/skills/test-t3-app/SKILL.md
  • AGENTS.md
  • docs/reference/scripts.md
  • packages/shared/package.json
  • packages/shared/src/devHome.test.ts
  • packages/shared/src/devHome.ts
  • packages/shared/src/hostProcess.ts
  • scripts/dev-runner.test.ts
  • scripts/dev-runner.ts

Comment on lines +28 to +33
const gitdir = gitFileContents
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== locate devHome =="
fd -a 'devHome\.'.| sed 's#^\./##'echo"== diff/stat summary =="
git diff --stat ||trueecho"== inspect packages/shared/src/devHome.ts =="if [ -f packages/shared/src/devHome.ts ];then
nl -ba packages/shared/src/devHome.ts | sed -n '1,140p'fiecho"== search devHome usages/tests =="
rg -n "devHome|linked worktree|worktrees|gitdir|\.t3" packages/shared -S ||true

Repository: pingdotgg/t3code

Length of output: 390


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== packages/shared/src/devHome.ts =="
cat -n packages/shared/src/devHome.ts | sed -n '1,160p'echo"== related tests =="
cat -n packages/shared/src/devHome.test.ts | sed -n '1,220p'echo"== behavioral parser probe from source text =="
python3 - <<'PY'raw = open('packages/shared/src/devHome.ts', encoding='utf-8').read()print('finds split/find:', 'find((line) => line.startsWith("gitdir:"))' in raw)print('contains .split limit:', re := __import__('re'); bool(re.search(r'split\([^;]*,\\s*1\\s*\)', raw)))cases = { 'single': 'gitdir: /repo/path\n', 'junk_after': 'junk\n gitdir: /repo/path \n', 'junk_before': '\n junk\n gitdir: /repo/path \n', 'no_gitdir': 'junk\n', 'empty': '',}def current(contents): gitdir = ( contents .split('\n') .map(lambda line: line.strip()) .find(lambda line: line.startswith('gitdir:')) .removeprefix('gitdir:') .strip() if any(line.strip().startswith('gitdir:') for line in contents.split('\n')) else None ) return gitdirfor name, value in cases.items(): print(name, repr(current(value)))PY

Repository: pingdotgg/t3code

Length of output: 10757


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== focused test command availability/state =="command -v vp ||truecommand -v find ||trueecho"== deterministic scan behavior for parser condition =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_gitdir(contents): gitdir = next( (line.strip().removeprefix("gitdir:").strip() for line in contents.split("\n") if line.strip().startswith("gitdir:")), None, ) if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirdef proposed_gitdir(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() gitdir = s.removeprefix("gitdir:").strip() if s.startswith("gitdir:") else None if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_gitdir(contents) p = proposed_gitdir(contents) print(f"{name}|{c[0] if c[0] is not None else None}|{c[1]}|{p[0] if p[0] is not None else None}|{p[1]}")PYecho"== check package scripts/tests =="
cat -n package.json | sed -n '1,160p'2>/dev/null ||true
cat -n packages/shared/package.json | sed -n '1,160p'2>/dev/null ||true

Repository: pingdotgg/t3code

Length of output: 464


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== deterministic scan behavior for .git parser =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_result(contents): for line in contents.split("\n"): s = line.strip() if s.startswith("gitdir:"): gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdir return None, Nonedef proposed_result(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() if not s.startswith("gitdir:"): return None, None gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_result(contents) p = proposed_result(contents) print(f"{name}|{c[0]}|{c[1]}|{p[0]}|{p[1]}")PYecho"== package.json scripts =="if [ -f package.json ];then
python3 - <<'PY'import jsonfrom pathlib import Pathfor path in [Path("package.json"), Path("packages/shared/package.json")]: if path.exists(): data = json.loads(path.read_text()) print(path) print(json.dumps(data.get("scripts", {}), indent=2, sort_keys=True))PYfi

Repository: pingdotgg/t3code

Length of output: 3358


Reject malformed .git pointer files.

pointsAtLinkedWorktree() accepts later gitdir: lines after arbitrary content, so .git with junk\ngitdir: /elsewhere/.git/worktrees/x can be treated as a linked worktree. Parse only the first pointer line and add a regression fixture.

Proposed fix
- const gitdir = gitFileContents- .split(/\r?\n/)- .map((line) => line.trim())- .find((line) => line.startsWith("gitdir:"))- ?.slice("gitdir:".length)- .trim();+ const [pointerLine = ""] = gitFileContents.split(/\r?\n/, 1);+ const gitdir = pointerLine.trim().startsWith("gitdir:")+ ? pointerLine.trim().slice("gitdir:".length).trim()+ : undefined;
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
constgitdir=gitFileContents
.split(/\r?\n/)
.map((line)=>line.trim())
.find((line)=>line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();
const[pointerLine=""]=gitFileContents.split(/\r?\n/,1);
constgitdir=pointerLine.trim().startsWith("gitdir:")
? pointerLine.trim().slice("gitdir:".length).trim()
: undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/shared/src/devHome.ts` around lines 28 - 33, Update
pointsAtLinkedWorktree() to validate the .git pointer file using only its first
meaningful line, rejecting files with arbitrary content before a gitdir:
declaration instead of accepting later lines. Preserve valid linked-worktree
resolution and add a regression fixture covering junk followed by a gitdir:
line.

Source: Coding guidelines

@t3dotggt3dotgg changed the title Keep worktree dev state isolatedfeat(dev): keep worktree dev state isolated on T3 Code dev serversJul 26, 2026
@t3dotgg
t3dotgg merged commit a17cbc3 into mainJul 26, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the agent/dev-worktree-isolation branch July 26, 2026 22:27
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
Refresh, not reproduce: both newly added topics were cut from current
upstream main, so reproducing onto the locked 5719e8a would have
dragged pingdotgg#4555 in through a merge rather than taking it as the base.
All twelve conflicts replayed verbatim from the previous build except
t3code/local/build-provenance, which is new and had one genuine two-topic
conflict in SettingsSidebarNav.tsx: the stack has restructured the flat
nav into Client/Environment groups. Build went in the Client group -- it
describes the bundle this client is running, which does not change with
the selected environment.
Also corrects three audit exceptions that claimed chat.newEnvironment and
project.add "remain in DEFAULT_KEYBINDINGS". They do not. The commands
survive and stay invocable from the command palette, but the client-owned
keybindings topic reassigns mod+shift+n to chat.newLocal and carries
neither default rule into packages/contracts. Verified identical in the
previously published 16d053b and d596d17, so this is inherited rather
than dropped here -- but the old wording would have hidden a real drop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675
**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
andreasmolnardev pushed a commit to andreasmolnardev/codewise that referenced this pull request Jul 28, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 <noreply@anthropic.com>
* 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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: mel <mcmelon@nodiumhosting.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 2, 2026
Brings in 81 upstream commits (up to v0.0.31, "fix(web): align remote
server update action" pingdotgg#4731). One file conflicted: apps/web/vite.config.ts.
Upstream independently shipped single-origin browser dev (pingdotgg#4555/pingdotgg#4556/pingdotgg#4608
— Tailscale sharing, isolated worktree dev state, browser-blocked port
avoidance), which covers the same ground as this fork's proxy-origin work in
pingdotgg#3. The conflict is resolved by taking upstream's implementation wholesale and
re-applying only what is genuinely fork-specific on top:
- T3CODE_DEV_PROXY_TARGET / T3CODE_PROXY_TARGET_OVERRIDE / T3CODE_PROXY_TARGET
/ MOATLESS_BASE_URL still select the proxy target, and now take precedence
over upstream's T3CODE_PORT-derived default, which the dev runner always
sets. Naming a target also implies single-origin mode, so VITE_HTTP_URL and
VITE_WS_URL stay blank and the browser resolves the backend from its own
origin.
- VITE_MOATLESS_PROXY_AUTH is still defined for environments/primary/auth.ts.
- T3CODE_ALLOWED_HOSTS is kept as an alias of upstream's new
T3CODE_DEV_ALLOWED_HOSTS (deployments inject the former), along with the
`true` escape hatch. Upstream's implicit .ts.net entry is preserved.
- The NODE_ENV=production pin for `vite serve` is kept; hosted sandboxes still
export it process-wide.
Dropped as superseded:
- T3CODE_HMR_HOST and its dev-runner plumbing. Upstream now deletes an
inherited HOST for every non-desktop mode and gates the HMR pin on
`explicitHost`, which is the same fix with upstream's own tests
(scripts/dev-runner.test.ts "drops an inherited HOST in <mode> mode").
scripts/dev-runner.ts and its test now match upstream exactly.
- The separate /attachments proxy entry. Prefixes now come from
packages/shared/src/devProxy.ts, and attachments moved under
/api/assets (ASSET_ROUTE_PREFIX), which /api already covers.
Verified: pnpm typecheck clean across all 15 projects; pnpm test green
(apps/web 1673, scripts 197, full monorepo suite otherwise passing — one
load-induced 15s timeout in the upstream-owned
src/lib/stashImageCompression.test.ts, which passes in isolation);
pnpm lint exit 0; pnpm fmt:check clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

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

Merged
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation
Jul 26, 2026
Merged

feat(dev): keep worktree dev state isolated on T3 Code dev servers#4555
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation

Conversation

@t3dotgg

@t3dotggt3dotgg commented Jul 26, 2026

Copy link
Copy Markdown
Member

Note

Dev mode overhaul — PR 1 of 3. The stack moves from worktree-isolated dev statesingle-origin and Tailscale sharingpairing and seed utilities. This PR establishes the foundation; #4556 is stacked on it.

What

  • Resolve linked worktree roots and default development state to that worktree’s ignored .t3 directory.
  • Keep an explicit --home-dir authoritative while preventing an ambient T3CODE_HOME from selecting the installed app’s live data.
  • Document and test the resolution rules.

Why

A dev command launched from a linked worktree could otherwise inherit the shared application home and write development state into the database used by the installed app.

Impact

This is the foundational slice of the dev-server overhaul. It changes only worktree state isolation and is the base for the two follow-up PRs.

Verification

  • vp test run packages/shared/src/devHome.test.ts scripts/dev-runner.test.ts (32 tests)
  • targeted lint
  • vp run --filter=@t3tools/shared typecheck

Note

Isolate dev state to the linked git worktree's .t3 directory by default

  • Adds resolveGitWorktreePath and resolveWorktreeT3Home utilities in packages/shared/src/devHome.ts to detect when the process runs inside a linked git worktree and derive its local .t3 path.
  • Updates scripts/dev-runner.ts to apply a new precedence order: explicit --home-dir > worktree-local <worktree>/.t3 > ambient T3CODE_HOME. Blank --home-dir is treated as unset.
  • Removes the implicit T3CODE_HOME fallback from the --home-dir CLI flag; absence of the flag now delegates to the new precedence logic.
  • Updates docs and AGENTS.md to document the new precedence rules, including the note that submodules are not worktrees.
  • Behavioral Change: when running inside a linked worktree, the dev server now ignores T3CODE_HOME unless --home-dir is absent and no worktree .t3 is detected.

Macroscope summarized 6404fc1.


Note

Medium Risk
Changes which SQLite database dev commands use in worktrees (behavioral shift away from shared/live userdata); logic is well-tested but mis-detection could still point at the wrong home.

Overview
Linked git worktrees now get an isolated dev data directory at <worktree>/.t3 (userdata under <worktree>/.t3/userdata) when you run vp run dev, so feature work does not inherit the installed app’s shared home.

The dev runner resolves home in order: explicit --home-dir (whitespace-only counts as unset), then worktree .t3, then ambient T3CODE_HOME. Worktree detection walks up from cwd, treats a .gitfile whose gitdir: ends in worktrees/<name> as a linked worktree (not main checkout, submodules, or invalid pointers), and is implemented in new @t3tools/shared/devHome helpers with tests. createDevRunnerEnv no longer merges ambient T3CODE_HOME when no explicit base dir is passed; precedence is applied in runDevRunnerWithInput using injectable HostProcessWorkingDirectory. Agent docs and test-t3-app / scripts reference reflect the new default and pairing/SQLite paths for worktree-local state.

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

Summary by CodeRabbit

  • New Features

    • Development environments in linked worktrees now use a worktree-local .t3 directory by default.
    • Added clear precedence for development home selection: explicit --home-dir, worktree .t3, then ambient configuration.
    • Added a shared development-home export for tooling integrations.
  • Documentation

    • Clarified development server setup, state storage, isolation, and pairing-token recovery guidance.
  • Tests

    • Added coverage for worktree detection and development-home precedence across repository layouts and configuration scenarios.

@coderabbitai

coderabbitaiBot commented Jul 26, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Title check✅ PassedThe title clearly matches the main change: isolating worktree dev state on T3 dev servers.
Description check✅ PassedThe PR description covers what changed, why, and verification; the missing checklist/UI section is non-critical here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/dev-worktree-isolation

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-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
@t3dotgg
t3dotgg marked this pull request as ready for review July 26, 2026 05:21
Comment threadpackages/shared/src/devHome.ts Outdated
Comment threadscripts/dev-runner.ts Outdated

@cursorcursorBot 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 2 potential issues.

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 2654583. Configure here.

Comment threadscripts/dev-runner.ts Outdated
Comment threadpackages/shared/src/devHome.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes runtime behavior by modifying how dev servers resolve their home directory, with worktree-local .t3 now outranking ambient T3CODE_HOME. While well-tested and scoped to dev scenarios, this precedence change warrants human review.

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

A submodule's `.git` is also a file, so the file-vs-directory check alone
classified every submodule as a linked worktree and handed it a
worktree-local `.t3`. Read the `gitdir:` pointer and require it to land in
`.git/worktrees` (compared as path segments, not a substring).
Resolve cwd through a HostProcessWorkingDirectory reference rather than
calling process.cwd() directly, so the precedence chain is testable.
Add tests for the submodule and malformed-`.git`-file cases, plus
end-to-end coverage of all four home-precedence outcomes, which had no
test before. Document that worktree state lands in `.t3/userdata`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@t3dotgg

Copy link
Copy Markdown
MemberAuthor

Reviewed and pushed fixes in 2a3ef8c.

Findings

1. Submodules were misclassified as worktrees (correctness bug)

resolveGitWorktreePath treated any .gitfile as a linked worktree. But a git submodule's .git is also a file — it just points somewhere else:

worktree: gitdir: /repo/.git/worktrees/x
submodule: gitdir: ../.git/modules/sub

Verified against a real submodule, the helper returned the submodule root, so vp run dev from inside one would silently write state to <submodule>/.t3 — a directory that is not gitignored by the parent repo's .gitignore. Fixed by parsing the gitdir: pointer and requiring .git/worktrees as path segments (not a substring, so a directory legitimately named worktrees can't false-positive). A malformed or unreadable .git file now falls through to the normal precedence rather than claiming a worktree.

2. process.cwd() read directly, making precedence untestable

runDevRunnerWithInput called process.cwd() inline while reading every other ambient input through a Context.Reference. That's why the precedence chain — the actual point of this PR — had zero test coverage: there was no way to vary cwd. Added HostProcessWorkingDirectory alongside the existing HostProcessEnvironment/HostProcessPlatform references and routed the call through it.

3. Precedence chain had no end-to-end test

devHome.test.ts covered the helper and createDevRunnerEnv covered env construction, but nothing tested that they compose into the documented --home-dir > worktree .t3 > T3CODE_HOME > default order. Added four tests asserting the T3CODE_HOME actually handed to the spawned process for each branch.

4. Stale doc claim

test-t3-app/SKILL.md said the <base>/dev fallback applies to "an implicit dev home." A worktree .t3 is passed as an explicit base dir, so it resolves to .t3/userdata, not .t3/dev — worth stating since the skill tells agents where to find state.sqlite.

Verification

  • vp test run packages/shared scripts — 479 passed (38 in the two touched files, up from 32)
  • vp run --filter=@t3tools/shared typecheck, scripts typecheck — clean
  • lint on all touched files — clean
  • Manual --dry-run across all four paths:
cwdambient T3CODE_HOMEflagresolved baseDir
worktreeset<worktree>/.t3
worktreeset--home-dirthe flag
main checkoutset/home/theo/.t3
submoduleset/home/theo/.t3

The core design is right and the ambient-T3CODE_HOME hazard it addresses is real — I hit exactly that setup locally (T3CODE_HOME=/home/theo/.t3), where the old behavior would have pointed a worktree dev server at the installed app's live userdata database.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
Comment threadpackages/shared/src/devHome.ts Outdated
The `.git/worktrees` segment check rejected worktrees whose common dir is
not named `.git`. A worktree of a bare repo points at
`<repo>.git/worktrees/<name>`, and $GIT_COMMON_DIR can be anything. Git
always uses the `worktrees/<name>` tail, so match on that instead;
`<git-dir>/modules/<name>` still fails it.
A blank `--home-dir` also counted as a selection under `??`, skipping the
worktree default and landing on the shared home — the outcome this
precedence exists to prevent. Trim before choosing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/shared/src/devHome.ts`:
- Around line 28-33: Update pointsAtLinkedWorktree() to validate the .git
pointer file using only its first meaningful line, rejecting files with
arbitrary content before a gitdir: declaration instead of accepting later lines.
Preserve valid linked-worktree resolution and add a regression fixture covering
junk followed by a gitdir: line.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b5bb3d2-5c90-4ecb-a211-9582b446b766

📥 Commits

Reviewing files that changed from the base of the PR and between 5719e8a and 6404fc1.

📒 Files selected for processing (9)
  • .agents/skills/test-t3-app/SKILL.md
  • AGENTS.md
  • docs/reference/scripts.md
  • packages/shared/package.json
  • packages/shared/src/devHome.test.ts
  • packages/shared/src/devHome.ts
  • packages/shared/src/hostProcess.ts
  • scripts/dev-runner.test.ts
  • scripts/dev-runner.ts

Comment on lines +28 to +33
const gitdir = gitFileContents
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== locate devHome =="
fd -a 'devHome\.'.| sed 's#^\./##'echo"== diff/stat summary =="
git diff --stat ||trueecho"== inspect packages/shared/src/devHome.ts =="if [ -f packages/shared/src/devHome.ts ];then
nl -ba packages/shared/src/devHome.ts | sed -n '1,140p'fiecho"== search devHome usages/tests =="
rg -n "devHome|linked worktree|worktrees|gitdir|\.t3" packages/shared -S ||true

Repository: pingdotgg/t3code

Length of output: 390


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== packages/shared/src/devHome.ts =="
cat -n packages/shared/src/devHome.ts | sed -n '1,160p'echo"== related tests =="
cat -n packages/shared/src/devHome.test.ts | sed -n '1,220p'echo"== behavioral parser probe from source text =="
python3 - <<'PY'raw = open('packages/shared/src/devHome.ts', encoding='utf-8').read()print('finds split/find:', 'find((line) => line.startsWith("gitdir:"))' in raw)print('contains .split limit:', re := __import__('re'); bool(re.search(r'split\([^;]*,\\s*1\\s*\)', raw)))cases = { 'single': 'gitdir: /repo/path\n', 'junk_after': 'junk\n gitdir: /repo/path \n', 'junk_before': '\n junk\n gitdir: /repo/path \n', 'no_gitdir': 'junk\n', 'empty': '',}def current(contents): gitdir = ( contents .split('\n') .map(lambda line: line.strip()) .find(lambda line: line.startswith('gitdir:')) .removeprefix('gitdir:') .strip() if any(line.strip().startswith('gitdir:') for line in contents.split('\n')) else None ) return gitdirfor name, value in cases.items(): print(name, repr(current(value)))PY

Repository: pingdotgg/t3code

Length of output: 10757


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== focused test command availability/state =="command -v vp ||truecommand -v find ||trueecho"== deterministic scan behavior for parser condition =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_gitdir(contents): gitdir = next( (line.strip().removeprefix("gitdir:").strip() for line in contents.split("\n") if line.strip().startswith("gitdir:")), None, ) if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirdef proposed_gitdir(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() gitdir = s.removeprefix("gitdir:").strip() if s.startswith("gitdir:") else None if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_gitdir(contents) p = proposed_gitdir(contents) print(f"{name}|{c[0] if c[0] is not None else None}|{c[1]}|{p[0] if p[0] is not None else None}|{p[1]}")PYecho"== check package scripts/tests =="
cat -n package.json | sed -n '1,160p'2>/dev/null ||true
cat -n packages/shared/package.json | sed -n '1,160p'2>/dev/null ||true

Repository: pingdotgg/t3code

Length of output: 464


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== deterministic scan behavior for .git parser =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_result(contents): for line in contents.split("\n"): s = line.strip() if s.startswith("gitdir:"): gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdir return None, Nonedef proposed_result(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() if not s.startswith("gitdir:"): return None, None gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_result(contents) p = proposed_result(contents) print(f"{name}|{c[0]}|{c[1]}|{p[0]}|{p[1]}")PYecho"== package.json scripts =="if [ -f package.json ];then
python3 - <<'PY'import jsonfrom pathlib import Pathfor path in [Path("package.json"), Path("packages/shared/package.json")]: if path.exists(): data = json.loads(path.read_text()) print(path) print(json.dumps(data.get("scripts", {}), indent=2, sort_keys=True))PYfi

Repository: pingdotgg/t3code

Length of output: 3358


Reject malformed .git pointer files.

pointsAtLinkedWorktree() accepts later gitdir: lines after arbitrary content, so .git with junk\ngitdir: /elsewhere/.git/worktrees/x can be treated as a linked worktree. Parse only the first pointer line and add a regression fixture.

Proposed fix
- const gitdir = gitFileContents- .split(/\r?\n/)- .map((line) => line.trim())- .find((line) => line.startsWith("gitdir:"))- ?.slice("gitdir:".length)- .trim();+ const [pointerLine = ""] = gitFileContents.split(/\r?\n/, 1);+ const gitdir = pointerLine.trim().startsWith("gitdir:")+ ? pointerLine.trim().slice("gitdir:".length).trim()+ : undefined;
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
constgitdir=gitFileContents
.split(/\r?\n/)
.map((line)=>line.trim())
.find((line)=>line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();
const[pointerLine=""]=gitFileContents.split(/\r?\n/,1);
constgitdir=pointerLine.trim().startsWith("gitdir:")
? pointerLine.trim().slice("gitdir:".length).trim()
: undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/shared/src/devHome.ts` around lines 28 - 33, Update
pointsAtLinkedWorktree() to validate the .git pointer file using only its first
meaningful line, rejecting files with arbitrary content before a gitdir:
declaration instead of accepting later lines. Preserve valid linked-worktree
resolution and add a regression fixture covering junk followed by a gitdir:
line.

Source: Coding guidelines

@t3dotggt3dotgg changed the title Keep worktree dev state isolatedfeat(dev): keep worktree dev state isolated on T3 Code dev serversJul 26, 2026
@t3dotgg
t3dotgg merged commit a17cbc3 into mainJul 26, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the agent/dev-worktree-isolation branch July 26, 2026 22:27
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
Refresh, not reproduce: both newly added topics were cut from current
upstream main, so reproducing onto the locked 5719e8a would have
dragged pingdotgg#4555 in through a merge rather than taking it as the base.
All twelve conflicts replayed verbatim from the previous build except
t3code/local/build-provenance, which is new and had one genuine two-topic
conflict in SettingsSidebarNav.tsx: the stack has restructured the flat
nav into Client/Environment groups. Build went in the Client group -- it
describes the bundle this client is running, which does not change with
the selected environment.
Also corrects three audit exceptions that claimed chat.newEnvironment and
project.add "remain in DEFAULT_KEYBINDINGS". They do not. The commands
survive and stay invocable from the command palette, but the client-owned
keybindings topic reassigns mod+shift+n to chat.newLocal and carries
neither default rule into packages/contracts. Verified identical in the
previously published 16d053b and d596d17, so this is inherited rather
than dropped here -- but the old wording would have hidden a real drop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675
**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
andreasmolnardev pushed a commit to andreasmolnardev/codewise that referenced this pull request Jul 28, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 <noreply@anthropic.com>
* 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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: mel <mcmelon@nodiumhosting.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 2, 2026
Brings in 81 upstream commits (up to v0.0.31, "fix(web): align remote
server update action" pingdotgg#4731). One file conflicted: apps/web/vite.config.ts.
Upstream independently shipped single-origin browser dev (pingdotgg#4555/pingdotgg#4556/pingdotgg#4608
— Tailscale sharing, isolated worktree dev state, browser-blocked port
avoidance), which covers the same ground as this fork's proxy-origin work in
pingdotgg#3. The conflict is resolved by taking upstream's implementation wholesale and
re-applying only what is genuinely fork-specific on top:
- T3CODE_DEV_PROXY_TARGET / T3CODE_PROXY_TARGET_OVERRIDE / T3CODE_PROXY_TARGET
/ MOATLESS_BASE_URL still select the proxy target, and now take precedence
over upstream's T3CODE_PORT-derived default, which the dev runner always
sets. Naming a target also implies single-origin mode, so VITE_HTTP_URL and
VITE_WS_URL stay blank and the browser resolves the backend from its own
origin.
- VITE_MOATLESS_PROXY_AUTH is still defined for environments/primary/auth.ts.
- T3CODE_ALLOWED_HOSTS is kept as an alias of upstream's new
T3CODE_DEV_ALLOWED_HOSTS (deployments inject the former), along with the
`true` escape hatch. Upstream's implicit .ts.net entry is preserved.
- The NODE_ENV=production pin for `vite serve` is kept; hosted sandboxes still
export it process-wide.
Dropped as superseded:
- T3CODE_HMR_HOST and its dev-runner plumbing. Upstream now deletes an
inherited HOST for every non-desktop mode and gates the HMR pin on
`explicitHost`, which is the same fix with upstream's own tests
(scripts/dev-runner.test.ts "drops an inherited HOST in <mode> mode").
scripts/dev-runner.ts and its test now match upstream exactly.
- The separate /attachments proxy entry. Prefixes now come from
packages/shared/src/devProxy.ts, and attachments moved under
/api/assets (ASSET_ROUTE_PREFIX), which /api already covers.
Verified: pnpm typecheck clean across all 15 projects; pnpm test green
(apps/web 1673, scripts 197, full monorepo suite otherwise passing — one
load-induced 15s timeout in the upstream-owned
src/lib/stashImageCompression.test.ts, which passes in isolation);
pnpm lint exit 0; pnpm fmt:check clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation
Jul 26, 2026
Merged

feat(dev): keep worktree dev state isolated on T3 Code dev servers#4555
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation

Conversation

@t3dotgg

@t3dotggt3dotgg commented Jul 26, 2026

Copy link
Copy Markdown
Member

Note

Dev mode overhaul — PR 1 of 3. The stack moves from worktree-isolated dev statesingle-origin and Tailscale sharingpairing and seed utilities. This PR establishes the foundation; #4556 is stacked on it.

What

  • Resolve linked worktree roots and default development state to that worktree’s ignored .t3 directory.
  • Keep an explicit --home-dir authoritative while preventing an ambient T3CODE_HOME from selecting the installed app’s live data.
  • Document and test the resolution rules.

Why

A dev command launched from a linked worktree could otherwise inherit the shared application home and write development state into the database used by the installed app.

Impact

This is the foundational slice of the dev-server overhaul. It changes only worktree state isolation and is the base for the two follow-up PRs.

Verification

  • vp test run packages/shared/src/devHome.test.ts scripts/dev-runner.test.ts (32 tests)
  • targeted lint
  • vp run --filter=@t3tools/shared typecheck

Note

Isolate dev state to the linked git worktree's .t3 directory by default

  • Adds resolveGitWorktreePath and resolveWorktreeT3Home utilities in packages/shared/src/devHome.ts to detect when the process runs inside a linked git worktree and derive its local .t3 path.
  • Updates scripts/dev-runner.ts to apply a new precedence order: explicit --home-dir > worktree-local <worktree>/.t3 > ambient T3CODE_HOME. Blank --home-dir is treated as unset.
  • Removes the implicit T3CODE_HOME fallback from the --home-dir CLI flag; absence of the flag now delegates to the new precedence logic.
  • Updates docs and AGENTS.md to document the new precedence rules, including the note that submodules are not worktrees.
  • Behavioral Change: when running inside a linked worktree, the dev server now ignores T3CODE_HOME unless --home-dir is absent and no worktree .t3 is detected.

Macroscope summarized 6404fc1.


Note

Medium Risk
Changes which SQLite database dev commands use in worktrees (behavioral shift away from shared/live userdata); logic is well-tested but mis-detection could still point at the wrong home.

Overview
Linked git worktrees now get an isolated dev data directory at <worktree>/.t3 (userdata under <worktree>/.t3/userdata) when you run vp run dev, so feature work does not inherit the installed app’s shared home.

The dev runner resolves home in order: explicit --home-dir (whitespace-only counts as unset), then worktree .t3, then ambient T3CODE_HOME. Worktree detection walks up from cwd, treats a .gitfile whose gitdir: ends in worktrees/<name> as a linked worktree (not main checkout, submodules, or invalid pointers), and is implemented in new @t3tools/shared/devHome helpers with tests. createDevRunnerEnv no longer merges ambient T3CODE_HOME when no explicit base dir is passed; precedence is applied in runDevRunnerWithInput using injectable HostProcessWorkingDirectory. Agent docs and test-t3-app / scripts reference reflect the new default and pairing/SQLite paths for worktree-local state.

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

Summary by CodeRabbit

  • New Features

    • Development environments in linked worktrees now use a worktree-local .t3 directory by default.
    • Added clear precedence for development home selection: explicit --home-dir, worktree .t3, then ambient configuration.
    • Added a shared development-home export for tooling integrations.
  • Documentation

    • Clarified development server setup, state storage, isolation, and pairing-token recovery guidance.
  • Tests

    • Added coverage for worktree detection and development-home precedence across repository layouts and configuration scenarios.

@coderabbitai

coderabbitaiBot commented Jul 26, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Title check✅ PassedThe title clearly matches the main change: isolating worktree dev state on T3 dev servers.
Description check✅ PassedThe PR description covers what changed, why, and verification; the missing checklist/UI section is non-critical here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/dev-worktree-isolation

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-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
@t3dotgg
t3dotgg marked this pull request as ready for review July 26, 2026 05:21
Comment threadpackages/shared/src/devHome.ts Outdated
Comment threadscripts/dev-runner.ts Outdated

@cursorcursorBot 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 2 potential issues.

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 2654583. Configure here.

Comment threadscripts/dev-runner.ts Outdated
Comment threadpackages/shared/src/devHome.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes runtime behavior by modifying how dev servers resolve their home directory, with worktree-local .t3 now outranking ambient T3CODE_HOME. While well-tested and scoped to dev scenarios, this precedence change warrants human review.

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

A submodule's `.git` is also a file, so the file-vs-directory check alone
classified every submodule as a linked worktree and handed it a
worktree-local `.t3`. Read the `gitdir:` pointer and require it to land in
`.git/worktrees` (compared as path segments, not a substring).
Resolve cwd through a HostProcessWorkingDirectory reference rather than
calling process.cwd() directly, so the precedence chain is testable.
Add tests for the submodule and malformed-`.git`-file cases, plus
end-to-end coverage of all four home-precedence outcomes, which had no
test before. Document that worktree state lands in `.t3/userdata`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@t3dotgg

Copy link
Copy Markdown
MemberAuthor

Reviewed and pushed fixes in 2a3ef8c.

Findings

1. Submodules were misclassified as worktrees (correctness bug)

resolveGitWorktreePath treated any .gitfile as a linked worktree. But a git submodule's .git is also a file — it just points somewhere else:

worktree: gitdir: /repo/.git/worktrees/x
submodule: gitdir: ../.git/modules/sub

Verified against a real submodule, the helper returned the submodule root, so vp run dev from inside one would silently write state to <submodule>/.t3 — a directory that is not gitignored by the parent repo's .gitignore. Fixed by parsing the gitdir: pointer and requiring .git/worktrees as path segments (not a substring, so a directory legitimately named worktrees can't false-positive). A malformed or unreadable .git file now falls through to the normal precedence rather than claiming a worktree.

2. process.cwd() read directly, making precedence untestable

runDevRunnerWithInput called process.cwd() inline while reading every other ambient input through a Context.Reference. That's why the precedence chain — the actual point of this PR — had zero test coverage: there was no way to vary cwd. Added HostProcessWorkingDirectory alongside the existing HostProcessEnvironment/HostProcessPlatform references and routed the call through it.

3. Precedence chain had no end-to-end test

devHome.test.ts covered the helper and createDevRunnerEnv covered env construction, but nothing tested that they compose into the documented --home-dir > worktree .t3 > T3CODE_HOME > default order. Added four tests asserting the T3CODE_HOME actually handed to the spawned process for each branch.

4. Stale doc claim

test-t3-app/SKILL.md said the <base>/dev fallback applies to "an implicit dev home." A worktree .t3 is passed as an explicit base dir, so it resolves to .t3/userdata, not .t3/dev — worth stating since the skill tells agents where to find state.sqlite.

Verification

  • vp test run packages/shared scripts — 479 passed (38 in the two touched files, up from 32)
  • vp run --filter=@t3tools/shared typecheck, scripts typecheck — clean
  • lint on all touched files — clean
  • Manual --dry-run across all four paths:
cwdambient T3CODE_HOMEflagresolved baseDir
worktreeset<worktree>/.t3
worktreeset--home-dirthe flag
main checkoutset/home/theo/.t3
submoduleset/home/theo/.t3

The core design is right and the ambient-T3CODE_HOME hazard it addresses is real — I hit exactly that setup locally (T3CODE_HOME=/home/theo/.t3), where the old behavior would have pointed a worktree dev server at the installed app's live userdata database.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
Comment threadpackages/shared/src/devHome.ts Outdated
The `.git/worktrees` segment check rejected worktrees whose common dir is
not named `.git`. A worktree of a bare repo points at
`<repo>.git/worktrees/<name>`, and $GIT_COMMON_DIR can be anything. Git
always uses the `worktrees/<name>` tail, so match on that instead;
`<git-dir>/modules/<name>` still fails it.
A blank `--home-dir` also counted as a selection under `??`, skipping the
worktree default and landing on the shared home — the outcome this
precedence exists to prevent. Trim before choosing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/shared/src/devHome.ts`:
- Around line 28-33: Update pointsAtLinkedWorktree() to validate the .git
pointer file using only its first meaningful line, rejecting files with
arbitrary content before a gitdir: declaration instead of accepting later lines.
Preserve valid linked-worktree resolution and add a regression fixture covering
junk followed by a gitdir: line.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b5bb3d2-5c90-4ecb-a211-9582b446b766

📥 Commits

Reviewing files that changed from the base of the PR and between 5719e8a and 6404fc1.

📒 Files selected for processing (9)
  • .agents/skills/test-t3-app/SKILL.md
  • AGENTS.md
  • docs/reference/scripts.md
  • packages/shared/package.json
  • packages/shared/src/devHome.test.ts
  • packages/shared/src/devHome.ts
  • packages/shared/src/hostProcess.ts
  • scripts/dev-runner.test.ts
  • scripts/dev-runner.ts

Comment on lines +28 to +33
const gitdir = gitFileContents
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== locate devHome =="
fd -a 'devHome\.'.| sed 's#^\./##'echo"== diff/stat summary =="
git diff --stat ||trueecho"== inspect packages/shared/src/devHome.ts =="if [ -f packages/shared/src/devHome.ts ];then
nl -ba packages/shared/src/devHome.ts | sed -n '1,140p'fiecho"== search devHome usages/tests =="
rg -n "devHome|linked worktree|worktrees|gitdir|\.t3" packages/shared -S ||true

Repository: pingdotgg/t3code

Length of output: 390


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== packages/shared/src/devHome.ts =="
cat -n packages/shared/src/devHome.ts | sed -n '1,160p'echo"== related tests =="
cat -n packages/shared/src/devHome.test.ts | sed -n '1,220p'echo"== behavioral parser probe from source text =="
python3 - <<'PY'raw = open('packages/shared/src/devHome.ts', encoding='utf-8').read()print('finds split/find:', 'find((line) => line.startsWith("gitdir:"))' in raw)print('contains .split limit:', re := __import__('re'); bool(re.search(r'split\([^;]*,\\s*1\\s*\)', raw)))cases = { 'single': 'gitdir: /repo/path\n', 'junk_after': 'junk\n gitdir: /repo/path \n', 'junk_before': '\n junk\n gitdir: /repo/path \n', 'no_gitdir': 'junk\n', 'empty': '',}def current(contents): gitdir = ( contents .split('\n') .map(lambda line: line.strip()) .find(lambda line: line.startswith('gitdir:')) .removeprefix('gitdir:') .strip() if any(line.strip().startswith('gitdir:') for line in contents.split('\n')) else None ) return gitdirfor name, value in cases.items(): print(name, repr(current(value)))PY

Repository: pingdotgg/t3code

Length of output: 10757


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== focused test command availability/state =="command -v vp ||truecommand -v find ||trueecho"== deterministic scan behavior for parser condition =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_gitdir(contents): gitdir = next( (line.strip().removeprefix("gitdir:").strip() for line in contents.split("\n") if line.strip().startswith("gitdir:")), None, ) if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirdef proposed_gitdir(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() gitdir = s.removeprefix("gitdir:").strip() if s.startswith("gitdir:") else None if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_gitdir(contents) p = proposed_gitdir(contents) print(f"{name}|{c[0] if c[0] is not None else None}|{c[1]}|{p[0] if p[0] is not None else None}|{p[1]}")PYecho"== check package scripts/tests =="
cat -n package.json | sed -n '1,160p'2>/dev/null ||true
cat -n packages/shared/package.json | sed -n '1,160p'2>/dev/null ||true

Repository: pingdotgg/t3code

Length of output: 464


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== deterministic scan behavior for .git parser =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_result(contents): for line in contents.split("\n"): s = line.strip() if s.startswith("gitdir:"): gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdir return None, Nonedef proposed_result(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() if not s.startswith("gitdir:"): return None, None gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_result(contents) p = proposed_result(contents) print(f"{name}|{c[0]}|{c[1]}|{p[0]}|{p[1]}")PYecho"== package.json scripts =="if [ -f package.json ];then
python3 - <<'PY'import jsonfrom pathlib import Pathfor path in [Path("package.json"), Path("packages/shared/package.json")]: if path.exists(): data = json.loads(path.read_text()) print(path) print(json.dumps(data.get("scripts", {}), indent=2, sort_keys=True))PYfi

Repository: pingdotgg/t3code

Length of output: 3358


Reject malformed .git pointer files.

pointsAtLinkedWorktree() accepts later gitdir: lines after arbitrary content, so .git with junk\ngitdir: /elsewhere/.git/worktrees/x can be treated as a linked worktree. Parse only the first pointer line and add a regression fixture.

Proposed fix
- const gitdir = gitFileContents- .split(/\r?\n/)- .map((line) => line.trim())- .find((line) => line.startsWith("gitdir:"))- ?.slice("gitdir:".length)- .trim();+ const [pointerLine = ""] = gitFileContents.split(/\r?\n/, 1);+ const gitdir = pointerLine.trim().startsWith("gitdir:")+ ? pointerLine.trim().slice("gitdir:".length).trim()+ : undefined;
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
constgitdir=gitFileContents
.split(/\r?\n/)
.map((line)=>line.trim())
.find((line)=>line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();
const[pointerLine=""]=gitFileContents.split(/\r?\n/,1);
constgitdir=pointerLine.trim().startsWith("gitdir:")
? pointerLine.trim().slice("gitdir:".length).trim()
: undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/shared/src/devHome.ts` around lines 28 - 33, Update
pointsAtLinkedWorktree() to validate the .git pointer file using only its first
meaningful line, rejecting files with arbitrary content before a gitdir:
declaration instead of accepting later lines. Preserve valid linked-worktree
resolution and add a regression fixture covering junk followed by a gitdir:
line.

Source: Coding guidelines

@t3dotggt3dotgg changed the title Keep worktree dev state isolatedfeat(dev): keep worktree dev state isolated on T3 Code dev serversJul 26, 2026
@t3dotgg
t3dotgg merged commit a17cbc3 into mainJul 26, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the agent/dev-worktree-isolation branch July 26, 2026 22:27
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
Refresh, not reproduce: both newly added topics were cut from current
upstream main, so reproducing onto the locked 5719e8a would have
dragged pingdotgg#4555 in through a merge rather than taking it as the base.
All twelve conflicts replayed verbatim from the previous build except
t3code/local/build-provenance, which is new and had one genuine two-topic
conflict in SettingsSidebarNav.tsx: the stack has restructured the flat
nav into Client/Environment groups. Build went in the Client group -- it
describes the bundle this client is running, which does not change with
the selected environment.
Also corrects three audit exceptions that claimed chat.newEnvironment and
project.add "remain in DEFAULT_KEYBINDINGS". They do not. The commands
survive and stay invocable from the command palette, but the client-owned
keybindings topic reassigns mod+shift+n to chat.newLocal and carries
neither default rule into packages/contracts. Verified identical in the
previously published 16d053b and d596d17, so this is inherited rather
than dropped here -- but the old wording would have hidden a real drop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675
**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
andreasmolnardev pushed a commit to andreasmolnardev/codewise that referenced this pull request Jul 28, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 <noreply@anthropic.com>
* 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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: mel <mcmelon@nodiumhosting.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 2, 2026
Brings in 81 upstream commits (up to v0.0.31, "fix(web): align remote
server update action" pingdotgg#4731). One file conflicted: apps/web/vite.config.ts.
Upstream independently shipped single-origin browser dev (pingdotgg#4555/pingdotgg#4556/pingdotgg#4608
— Tailscale sharing, isolated worktree dev state, browser-blocked port
avoidance), which covers the same ground as this fork's proxy-origin work in
pingdotgg#3. The conflict is resolved by taking upstream's implementation wholesale and
re-applying only what is genuinely fork-specific on top:
- T3CODE_DEV_PROXY_TARGET / T3CODE_PROXY_TARGET_OVERRIDE / T3CODE_PROXY_TARGET
/ MOATLESS_BASE_URL still select the proxy target, and now take precedence
over upstream's T3CODE_PORT-derived default, which the dev runner always
sets. Naming a target also implies single-origin mode, so VITE_HTTP_URL and
VITE_WS_URL stay blank and the browser resolves the backend from its own
origin.
- VITE_MOATLESS_PROXY_AUTH is still defined for environments/primary/auth.ts.
- T3CODE_ALLOWED_HOSTS is kept as an alias of upstream's new
T3CODE_DEV_ALLOWED_HOSTS (deployments inject the former), along with the
`true` escape hatch. Upstream's implicit .ts.net entry is preserved.
- The NODE_ENV=production pin for `vite serve` is kept; hosted sandboxes still
export it process-wide.
Dropped as superseded:
- T3CODE_HMR_HOST and its dev-runner plumbing. Upstream now deletes an
inherited HOST for every non-desktop mode and gates the HMR pin on
`explicitHost`, which is the same fix with upstream's own tests
(scripts/dev-runner.test.ts "drops an inherited HOST in <mode> mode").
scripts/dev-runner.ts and its test now match upstream exactly.
- The separate /attachments proxy entry. Prefixes now come from
packages/shared/src/devProxy.ts, and attachments moved under
/api/assets (ASSET_ROUTE_PREFIX), which /api already covers.
Verified: pnpm typecheck clean across all 15 projects; pnpm test green
(apps/web 1673, scripts 197, full monorepo suite otherwise passing — one
load-induced 15s timeout in the upstream-owned
src/lib/stashImageCompression.test.ts, which passes in isolation);
pnpm lint exit 0; pnpm fmt:check clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation
Jul 26, 2026
Merged

feat(dev): keep worktree dev state isolated on T3 Code dev servers#4555
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation

Conversation

@t3dotgg

@t3dotggt3dotgg commented Jul 26, 2026

Copy link
Copy Markdown
Member

Note

Dev mode overhaul — PR 1 of 3. The stack moves from worktree-isolated dev statesingle-origin and Tailscale sharingpairing and seed utilities. This PR establishes the foundation; #4556 is stacked on it.

What

  • Resolve linked worktree roots and default development state to that worktree’s ignored .t3 directory.
  • Keep an explicit --home-dir authoritative while preventing an ambient T3CODE_HOME from selecting the installed app’s live data.
  • Document and test the resolution rules.

Why

A dev command launched from a linked worktree could otherwise inherit the shared application home and write development state into the database used by the installed app.

Impact

This is the foundational slice of the dev-server overhaul. It changes only worktree state isolation and is the base for the two follow-up PRs.

Verification

  • vp test run packages/shared/src/devHome.test.ts scripts/dev-runner.test.ts (32 tests)
  • targeted lint
  • vp run --filter=@t3tools/shared typecheck

Note

Isolate dev state to the linked git worktree's .t3 directory by default

  • Adds resolveGitWorktreePath and resolveWorktreeT3Home utilities in packages/shared/src/devHome.ts to detect when the process runs inside a linked git worktree and derive its local .t3 path.
  • Updates scripts/dev-runner.ts to apply a new precedence order: explicit --home-dir > worktree-local <worktree>/.t3 > ambient T3CODE_HOME. Blank --home-dir is treated as unset.
  • Removes the implicit T3CODE_HOME fallback from the --home-dir CLI flag; absence of the flag now delegates to the new precedence logic.
  • Updates docs and AGENTS.md to document the new precedence rules, including the note that submodules are not worktrees.
  • Behavioral Change: when running inside a linked worktree, the dev server now ignores T3CODE_HOME unless --home-dir is absent and no worktree .t3 is detected.

Macroscope summarized 6404fc1.


Note

Medium Risk
Changes which SQLite database dev commands use in worktrees (behavioral shift away from shared/live userdata); logic is well-tested but mis-detection could still point at the wrong home.

Overview
Linked git worktrees now get an isolated dev data directory at <worktree>/.t3 (userdata under <worktree>/.t3/userdata) when you run vp run dev, so feature work does not inherit the installed app’s shared home.

The dev runner resolves home in order: explicit --home-dir (whitespace-only counts as unset), then worktree .t3, then ambient T3CODE_HOME. Worktree detection walks up from cwd, treats a .gitfile whose gitdir: ends in worktrees/<name> as a linked worktree (not main checkout, submodules, or invalid pointers), and is implemented in new @t3tools/shared/devHome helpers with tests. createDevRunnerEnv no longer merges ambient T3CODE_HOME when no explicit base dir is passed; precedence is applied in runDevRunnerWithInput using injectable HostProcessWorkingDirectory. Agent docs and test-t3-app / scripts reference reflect the new default and pairing/SQLite paths for worktree-local state.

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

Summary by CodeRabbit

  • New Features

    • Development environments in linked worktrees now use a worktree-local .t3 directory by default.
    • Added clear precedence for development home selection: explicit --home-dir, worktree .t3, then ambient configuration.
    • Added a shared development-home export for tooling integrations.
  • Documentation

    • Clarified development server setup, state storage, isolation, and pairing-token recovery guidance.
  • Tests

    • Added coverage for worktree detection and development-home precedence across repository layouts and configuration scenarios.

@coderabbitai

coderabbitaiBot commented Jul 26, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Title check✅ PassedThe title clearly matches the main change: isolating worktree dev state on T3 dev servers.
Description check✅ PassedThe PR description covers what changed, why, and verification; the missing checklist/UI section is non-critical here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/dev-worktree-isolation

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-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
@t3dotgg
t3dotgg marked this pull request as ready for review July 26, 2026 05:21
Comment threadpackages/shared/src/devHome.ts Outdated
Comment threadscripts/dev-runner.ts Outdated

@cursorcursorBot 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 2 potential issues.

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 2654583. Configure here.

Comment threadscripts/dev-runner.ts Outdated
Comment threadpackages/shared/src/devHome.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes runtime behavior by modifying how dev servers resolve their home directory, with worktree-local .t3 now outranking ambient T3CODE_HOME. While well-tested and scoped to dev scenarios, this precedence change warrants human review.

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

A submodule's `.git` is also a file, so the file-vs-directory check alone
classified every submodule as a linked worktree and handed it a
worktree-local `.t3`. Read the `gitdir:` pointer and require it to land in
`.git/worktrees` (compared as path segments, not a substring).
Resolve cwd through a HostProcessWorkingDirectory reference rather than
calling process.cwd() directly, so the precedence chain is testable.
Add tests for the submodule and malformed-`.git`-file cases, plus
end-to-end coverage of all four home-precedence outcomes, which had no
test before. Document that worktree state lands in `.t3/userdata`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@t3dotgg

Copy link
Copy Markdown
MemberAuthor

Reviewed and pushed fixes in 2a3ef8c.

Findings

1. Submodules were misclassified as worktrees (correctness bug)

resolveGitWorktreePath treated any .gitfile as a linked worktree. But a git submodule's .git is also a file — it just points somewhere else:

worktree: gitdir: /repo/.git/worktrees/x
submodule: gitdir: ../.git/modules/sub

Verified against a real submodule, the helper returned the submodule root, so vp run dev from inside one would silently write state to <submodule>/.t3 — a directory that is not gitignored by the parent repo's .gitignore. Fixed by parsing the gitdir: pointer and requiring .git/worktrees as path segments (not a substring, so a directory legitimately named worktrees can't false-positive). A malformed or unreadable .git file now falls through to the normal precedence rather than claiming a worktree.

2. process.cwd() read directly, making precedence untestable

runDevRunnerWithInput called process.cwd() inline while reading every other ambient input through a Context.Reference. That's why the precedence chain — the actual point of this PR — had zero test coverage: there was no way to vary cwd. Added HostProcessWorkingDirectory alongside the existing HostProcessEnvironment/HostProcessPlatform references and routed the call through it.

3. Precedence chain had no end-to-end test

devHome.test.ts covered the helper and createDevRunnerEnv covered env construction, but nothing tested that they compose into the documented --home-dir > worktree .t3 > T3CODE_HOME > default order. Added four tests asserting the T3CODE_HOME actually handed to the spawned process for each branch.

4. Stale doc claim

test-t3-app/SKILL.md said the <base>/dev fallback applies to "an implicit dev home." A worktree .t3 is passed as an explicit base dir, so it resolves to .t3/userdata, not .t3/dev — worth stating since the skill tells agents where to find state.sqlite.

Verification

  • vp test run packages/shared scripts — 479 passed (38 in the two touched files, up from 32)
  • vp run --filter=@t3tools/shared typecheck, scripts typecheck — clean
  • lint on all touched files — clean
  • Manual --dry-run across all four paths:
cwdambient T3CODE_HOMEflagresolved baseDir
worktreeset<worktree>/.t3
worktreeset--home-dirthe flag
main checkoutset/home/theo/.t3
submoduleset/home/theo/.t3

The core design is right and the ambient-T3CODE_HOME hazard it addresses is real — I hit exactly that setup locally (T3CODE_HOME=/home/theo/.t3), where the old behavior would have pointed a worktree dev server at the installed app's live userdata database.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
Comment threadpackages/shared/src/devHome.ts Outdated
The `.git/worktrees` segment check rejected worktrees whose common dir is
not named `.git`. A worktree of a bare repo points at
`<repo>.git/worktrees/<name>`, and $GIT_COMMON_DIR can be anything. Git
always uses the `worktrees/<name>` tail, so match on that instead;
`<git-dir>/modules/<name>` still fails it.
A blank `--home-dir` also counted as a selection under `??`, skipping the
worktree default and landing on the shared home — the outcome this
precedence exists to prevent. Trim before choosing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/shared/src/devHome.ts`:
- Around line 28-33: Update pointsAtLinkedWorktree() to validate the .git
pointer file using only its first meaningful line, rejecting files with
arbitrary content before a gitdir: declaration instead of accepting later lines.
Preserve valid linked-worktree resolution and add a regression fixture covering
junk followed by a gitdir: line.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b5bb3d2-5c90-4ecb-a211-9582b446b766

📥 Commits

Reviewing files that changed from the base of the PR and between 5719e8a and 6404fc1.

📒 Files selected for processing (9)
  • .agents/skills/test-t3-app/SKILL.md
  • AGENTS.md
  • docs/reference/scripts.md
  • packages/shared/package.json
  • packages/shared/src/devHome.test.ts
  • packages/shared/src/devHome.ts
  • packages/shared/src/hostProcess.ts
  • scripts/dev-runner.test.ts
  • scripts/dev-runner.ts

Comment on lines +28 to +33
const gitdir = gitFileContents
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== locate devHome =="
fd -a 'devHome\.'.| sed 's#^\./##'echo"== diff/stat summary =="
git diff --stat ||trueecho"== inspect packages/shared/src/devHome.ts =="if [ -f packages/shared/src/devHome.ts ];then
nl -ba packages/shared/src/devHome.ts | sed -n '1,140p'fiecho"== search devHome usages/tests =="
rg -n "devHome|linked worktree|worktrees|gitdir|\.t3" packages/shared -S ||true

Repository: pingdotgg/t3code

Length of output: 390


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== packages/shared/src/devHome.ts =="
cat -n packages/shared/src/devHome.ts | sed -n '1,160p'echo"== related tests =="
cat -n packages/shared/src/devHome.test.ts | sed -n '1,220p'echo"== behavioral parser probe from source text =="
python3 - <<'PY'raw = open('packages/shared/src/devHome.ts', encoding='utf-8').read()print('finds split/find:', 'find((line) => line.startsWith("gitdir:"))' in raw)print('contains .split limit:', re := __import__('re'); bool(re.search(r'split\([^;]*,\\s*1\\s*\)', raw)))cases = { 'single': 'gitdir: /repo/path\n', 'junk_after': 'junk\n gitdir: /repo/path \n', 'junk_before': '\n junk\n gitdir: /repo/path \n', 'no_gitdir': 'junk\n', 'empty': '',}def current(contents): gitdir = ( contents .split('\n') .map(lambda line: line.strip()) .find(lambda line: line.startswith('gitdir:')) .removeprefix('gitdir:') .strip() if any(line.strip().startswith('gitdir:') for line in contents.split('\n')) else None ) return gitdirfor name, value in cases.items(): print(name, repr(current(value)))PY

Repository: pingdotgg/t3code

Length of output: 10757


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== focused test command availability/state =="command -v vp ||truecommand -v find ||trueecho"== deterministic scan behavior for parser condition =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_gitdir(contents): gitdir = next( (line.strip().removeprefix("gitdir:").strip() for line in contents.split("\n") if line.strip().startswith("gitdir:")), None, ) if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirdef proposed_gitdir(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() gitdir = s.removeprefix("gitdir:").strip() if s.startswith("gitdir:") else None if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_gitdir(contents) p = proposed_gitdir(contents) print(f"{name}|{c[0] if c[0] is not None else None}|{c[1]}|{p[0] if p[0] is not None else None}|{p[1]}")PYecho"== check package scripts/tests =="
cat -n package.json | sed -n '1,160p'2>/dev/null ||true
cat -n packages/shared/package.json | sed -n '1,160p'2>/dev/null ||true

Repository: pingdotgg/t3code

Length of output: 464


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== deterministic scan behavior for .git parser =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_result(contents): for line in contents.split("\n"): s = line.strip() if s.startswith("gitdir:"): gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdir return None, Nonedef proposed_result(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() if not s.startswith("gitdir:"): return None, None gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_result(contents) p = proposed_result(contents) print(f"{name}|{c[0]}|{c[1]}|{p[0]}|{p[1]}")PYecho"== package.json scripts =="if [ -f package.json ];then
python3 - <<'PY'import jsonfrom pathlib import Pathfor path in [Path("package.json"), Path("packages/shared/package.json")]: if path.exists(): data = json.loads(path.read_text()) print(path) print(json.dumps(data.get("scripts", {}), indent=2, sort_keys=True))PYfi

Repository: pingdotgg/t3code

Length of output: 3358


Reject malformed .git pointer files.

pointsAtLinkedWorktree() accepts later gitdir: lines after arbitrary content, so .git with junk\ngitdir: /elsewhere/.git/worktrees/x can be treated as a linked worktree. Parse only the first pointer line and add a regression fixture.

Proposed fix
- const gitdir = gitFileContents- .split(/\r?\n/)- .map((line) => line.trim())- .find((line) => line.startsWith("gitdir:"))- ?.slice("gitdir:".length)- .trim();+ const [pointerLine = ""] = gitFileContents.split(/\r?\n/, 1);+ const gitdir = pointerLine.trim().startsWith("gitdir:")+ ? pointerLine.trim().slice("gitdir:".length).trim()+ : undefined;
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
constgitdir=gitFileContents
.split(/\r?\n/)
.map((line)=>line.trim())
.find((line)=>line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();
const[pointerLine=""]=gitFileContents.split(/\r?\n/,1);
constgitdir=pointerLine.trim().startsWith("gitdir:")
? pointerLine.trim().slice("gitdir:".length).trim()
: undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/shared/src/devHome.ts` around lines 28 - 33, Update
pointsAtLinkedWorktree() to validate the .git pointer file using only its first
meaningful line, rejecting files with arbitrary content before a gitdir:
declaration instead of accepting later lines. Preserve valid linked-worktree
resolution and add a regression fixture covering junk followed by a gitdir:
line.

Source: Coding guidelines

@t3dotggt3dotgg changed the title Keep worktree dev state isolatedfeat(dev): keep worktree dev state isolated on T3 Code dev serversJul 26, 2026
@t3dotgg
t3dotgg merged commit a17cbc3 into mainJul 26, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the agent/dev-worktree-isolation branch July 26, 2026 22:27
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
Refresh, not reproduce: both newly added topics were cut from current
upstream main, so reproducing onto the locked 5719e8a would have
dragged pingdotgg#4555 in through a merge rather than taking it as the base.
All twelve conflicts replayed verbatim from the previous build except
t3code/local/build-provenance, which is new and had one genuine two-topic
conflict in SettingsSidebarNav.tsx: the stack has restructured the flat
nav into Client/Environment groups. Build went in the Client group -- it
describes the bundle this client is running, which does not change with
the selected environment.
Also corrects three audit exceptions that claimed chat.newEnvironment and
project.add "remain in DEFAULT_KEYBINDINGS". They do not. The commands
survive and stay invocable from the command palette, but the client-owned
keybindings topic reassigns mod+shift+n to chat.newLocal and carries
neither default rule into packages/contracts. Verified identical in the
previously published 16d053b and d596d17, so this is inherited rather
than dropped here -- but the old wording would have hidden a real drop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675
**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
andreasmolnardev pushed a commit to andreasmolnardev/codewise that referenced this pull request Jul 28, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 <noreply@anthropic.com>
* 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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: mel <mcmelon@nodiumhosting.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 2, 2026
Brings in 81 upstream commits (up to v0.0.31, "fix(web): align remote
server update action" pingdotgg#4731). One file conflicted: apps/web/vite.config.ts.
Upstream independently shipped single-origin browser dev (pingdotgg#4555/pingdotgg#4556/pingdotgg#4608
— Tailscale sharing, isolated worktree dev state, browser-blocked port
avoidance), which covers the same ground as this fork's proxy-origin work in
pingdotgg#3. The conflict is resolved by taking upstream's implementation wholesale and
re-applying only what is genuinely fork-specific on top:
- T3CODE_DEV_PROXY_TARGET / T3CODE_PROXY_TARGET_OVERRIDE / T3CODE_PROXY_TARGET
/ MOATLESS_BASE_URL still select the proxy target, and now take precedence
over upstream's T3CODE_PORT-derived default, which the dev runner always
sets. Naming a target also implies single-origin mode, so VITE_HTTP_URL and
VITE_WS_URL stay blank and the browser resolves the backend from its own
origin.
- VITE_MOATLESS_PROXY_AUTH is still defined for environments/primary/auth.ts.
- T3CODE_ALLOWED_HOSTS is kept as an alias of upstream's new
T3CODE_DEV_ALLOWED_HOSTS (deployments inject the former), along with the
`true` escape hatch. Upstream's implicit .ts.net entry is preserved.
- The NODE_ENV=production pin for `vite serve` is kept; hosted sandboxes still
export it process-wide.
Dropped as superseded:
- T3CODE_HMR_HOST and its dev-runner plumbing. Upstream now deletes an
inherited HOST for every non-desktop mode and gates the HMR pin on
`explicitHost`, which is the same fix with upstream's own tests
(scripts/dev-runner.test.ts "drops an inherited HOST in <mode> mode").
scripts/dev-runner.ts and its test now match upstream exactly.
- The separate /attachments proxy entry. Prefixes now come from
packages/shared/src/devProxy.ts, and attachments moved under
/api/assets (ASSET_ROUTE_PREFIX), which /api already covers.
Verified: pnpm typecheck clean across all 15 projects; pnpm test green
(apps/web 1673, scripts 197, full monorepo suite otherwise passing — one
load-induced 15s timeout in the upstream-owned
src/lib/stashImageCompression.test.ts, which passes in isolation);
pnpm lint exit 0; pnpm fmt:check clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

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

Merged
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation
Jul 26, 2026
Merged

feat(dev): keep worktree dev state isolated on T3 Code dev servers#4555
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation

Conversation

@t3dotgg

@t3dotggt3dotgg commented Jul 26, 2026

Copy link
Copy Markdown
Member

Note

Dev mode overhaul — PR 1 of 3. The stack moves from worktree-isolated dev statesingle-origin and Tailscale sharingpairing and seed utilities. This PR establishes the foundation; #4556 is stacked on it.

What

  • Resolve linked worktree roots and default development state to that worktree’s ignored .t3 directory.
  • Keep an explicit --home-dir authoritative while preventing an ambient T3CODE_HOME from selecting the installed app’s live data.
  • Document and test the resolution rules.

Why

A dev command launched from a linked worktree could otherwise inherit the shared application home and write development state into the database used by the installed app.

Impact

This is the foundational slice of the dev-server overhaul. It changes only worktree state isolation and is the base for the two follow-up PRs.

Verification

  • vp test run packages/shared/src/devHome.test.ts scripts/dev-runner.test.ts (32 tests)
  • targeted lint
  • vp run --filter=@t3tools/shared typecheck

Note

Isolate dev state to the linked git worktree's .t3 directory by default

  • Adds resolveGitWorktreePath and resolveWorktreeT3Home utilities in packages/shared/src/devHome.ts to detect when the process runs inside a linked git worktree and derive its local .t3 path.
  • Updates scripts/dev-runner.ts to apply a new precedence order: explicit --home-dir > worktree-local <worktree>/.t3 > ambient T3CODE_HOME. Blank --home-dir is treated as unset.
  • Removes the implicit T3CODE_HOME fallback from the --home-dir CLI flag; absence of the flag now delegates to the new precedence logic.
  • Updates docs and AGENTS.md to document the new precedence rules, including the note that submodules are not worktrees.
  • Behavioral Change: when running inside a linked worktree, the dev server now ignores T3CODE_HOME unless --home-dir is absent and no worktree .t3 is detected.

Macroscope summarized 6404fc1.


Note

Medium Risk
Changes which SQLite database dev commands use in worktrees (behavioral shift away from shared/live userdata); logic is well-tested but mis-detection could still point at the wrong home.

Overview
Linked git worktrees now get an isolated dev data directory at <worktree>/.t3 (userdata under <worktree>/.t3/userdata) when you run vp run dev, so feature work does not inherit the installed app’s shared home.

The dev runner resolves home in order: explicit --home-dir (whitespace-only counts as unset), then worktree .t3, then ambient T3CODE_HOME. Worktree detection walks up from cwd, treats a .gitfile whose gitdir: ends in worktrees/<name> as a linked worktree (not main checkout, submodules, or invalid pointers), and is implemented in new @t3tools/shared/devHome helpers with tests. createDevRunnerEnv no longer merges ambient T3CODE_HOME when no explicit base dir is passed; precedence is applied in runDevRunnerWithInput using injectable HostProcessWorkingDirectory. Agent docs and test-t3-app / scripts reference reflect the new default and pairing/SQLite paths for worktree-local state.

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

Summary by CodeRabbit

  • New Features

    • Development environments in linked worktrees now use a worktree-local .t3 directory by default.
    • Added clear precedence for development home selection: explicit --home-dir, worktree .t3, then ambient configuration.
    • Added a shared development-home export for tooling integrations.
  • Documentation

    • Clarified development server setup, state storage, isolation, and pairing-token recovery guidance.
  • Tests

    • Added coverage for worktree detection and development-home precedence across repository layouts and configuration scenarios.

@coderabbitai

coderabbitaiBot commented Jul 26, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Title check✅ PassedThe title clearly matches the main change: isolating worktree dev state on T3 dev servers.
Description check✅ PassedThe PR description covers what changed, why, and verification; the missing checklist/UI section is non-critical here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/dev-worktree-isolation

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-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
@t3dotgg
t3dotgg marked this pull request as ready for review July 26, 2026 05:21
Comment threadpackages/shared/src/devHome.ts Outdated
Comment threadscripts/dev-runner.ts Outdated

@cursorcursorBot 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 2 potential issues.

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 2654583. Configure here.

Comment threadscripts/dev-runner.ts Outdated
Comment threadpackages/shared/src/devHome.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes runtime behavior by modifying how dev servers resolve their home directory, with worktree-local .t3 now outranking ambient T3CODE_HOME. While well-tested and scoped to dev scenarios, this precedence change warrants human review.

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

A submodule's `.git` is also a file, so the file-vs-directory check alone
classified every submodule as a linked worktree and handed it a
worktree-local `.t3`. Read the `gitdir:` pointer and require it to land in
`.git/worktrees` (compared as path segments, not a substring).
Resolve cwd through a HostProcessWorkingDirectory reference rather than
calling process.cwd() directly, so the precedence chain is testable.
Add tests for the submodule and malformed-`.git`-file cases, plus
end-to-end coverage of all four home-precedence outcomes, which had no
test before. Document that worktree state lands in `.t3/userdata`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@t3dotgg

Copy link
Copy Markdown
MemberAuthor

Reviewed and pushed fixes in 2a3ef8c.

Findings

1. Submodules were misclassified as worktrees (correctness bug)

resolveGitWorktreePath treated any .gitfile as a linked worktree. But a git submodule's .git is also a file — it just points somewhere else:

worktree: gitdir: /repo/.git/worktrees/x
submodule: gitdir: ../.git/modules/sub

Verified against a real submodule, the helper returned the submodule root, so vp run dev from inside one would silently write state to <submodule>/.t3 — a directory that is not gitignored by the parent repo's .gitignore. Fixed by parsing the gitdir: pointer and requiring .git/worktrees as path segments (not a substring, so a directory legitimately named worktrees can't false-positive). A malformed or unreadable .git file now falls through to the normal precedence rather than claiming a worktree.

2. process.cwd() read directly, making precedence untestable

runDevRunnerWithInput called process.cwd() inline while reading every other ambient input through a Context.Reference. That's why the precedence chain — the actual point of this PR — had zero test coverage: there was no way to vary cwd. Added HostProcessWorkingDirectory alongside the existing HostProcessEnvironment/HostProcessPlatform references and routed the call through it.

3. Precedence chain had no end-to-end test

devHome.test.ts covered the helper and createDevRunnerEnv covered env construction, but nothing tested that they compose into the documented --home-dir > worktree .t3 > T3CODE_HOME > default order. Added four tests asserting the T3CODE_HOME actually handed to the spawned process for each branch.

4. Stale doc claim

test-t3-app/SKILL.md said the <base>/dev fallback applies to "an implicit dev home." A worktree .t3 is passed as an explicit base dir, so it resolves to .t3/userdata, not .t3/dev — worth stating since the skill tells agents where to find state.sqlite.

Verification

  • vp test run packages/shared scripts — 479 passed (38 in the two touched files, up from 32)
  • vp run --filter=@t3tools/shared typecheck, scripts typecheck — clean
  • lint on all touched files — clean
  • Manual --dry-run across all four paths:
cwdambient T3CODE_HOMEflagresolved baseDir
worktreeset<worktree>/.t3
worktreeset--home-dirthe flag
main checkoutset/home/theo/.t3
submoduleset/home/theo/.t3

The core design is right and the ambient-T3CODE_HOME hazard it addresses is real — I hit exactly that setup locally (T3CODE_HOME=/home/theo/.t3), where the old behavior would have pointed a worktree dev server at the installed app's live userdata database.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
Comment threadpackages/shared/src/devHome.ts Outdated
The `.git/worktrees` segment check rejected worktrees whose common dir is
not named `.git`. A worktree of a bare repo points at
`<repo>.git/worktrees/<name>`, and $GIT_COMMON_DIR can be anything. Git
always uses the `worktrees/<name>` tail, so match on that instead;
`<git-dir>/modules/<name>` still fails it.
A blank `--home-dir` also counted as a selection under `??`, skipping the
worktree default and landing on the shared home — the outcome this
precedence exists to prevent. Trim before choosing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/shared/src/devHome.ts`:
- Around line 28-33: Update pointsAtLinkedWorktree() to validate the .git
pointer file using only its first meaningful line, rejecting files with
arbitrary content before a gitdir: declaration instead of accepting later lines.
Preserve valid linked-worktree resolution and add a regression fixture covering
junk followed by a gitdir: line.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b5bb3d2-5c90-4ecb-a211-9582b446b766

📥 Commits

Reviewing files that changed from the base of the PR and between 5719e8a and 6404fc1.

📒 Files selected for processing (9)
  • .agents/skills/test-t3-app/SKILL.md
  • AGENTS.md
  • docs/reference/scripts.md
  • packages/shared/package.json
  • packages/shared/src/devHome.test.ts
  • packages/shared/src/devHome.ts
  • packages/shared/src/hostProcess.ts
  • scripts/dev-runner.test.ts
  • scripts/dev-runner.ts

Comment on lines +28 to +33
const gitdir = gitFileContents
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== locate devHome =="
fd -a 'devHome\.'.| sed 's#^\./##'echo"== diff/stat summary =="
git diff --stat ||trueecho"== inspect packages/shared/src/devHome.ts =="if [ -f packages/shared/src/devHome.ts ];then
nl -ba packages/shared/src/devHome.ts | sed -n '1,140p'fiecho"== search devHome usages/tests =="
rg -n "devHome|linked worktree|worktrees|gitdir|\.t3" packages/shared -S ||true

Repository: pingdotgg/t3code

Length of output: 390


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== packages/shared/src/devHome.ts =="
cat -n packages/shared/src/devHome.ts | sed -n '1,160p'echo"== related tests =="
cat -n packages/shared/src/devHome.test.ts | sed -n '1,220p'echo"== behavioral parser probe from source text =="
python3 - <<'PY'raw = open('packages/shared/src/devHome.ts', encoding='utf-8').read()print('finds split/find:', 'find((line) => line.startsWith("gitdir:"))' in raw)print('contains .split limit:', re := __import__('re'); bool(re.search(r'split\([^;]*,\\s*1\\s*\)', raw)))cases = { 'single': 'gitdir: /repo/path\n', 'junk_after': 'junk\n gitdir: /repo/path \n', 'junk_before': '\n junk\n gitdir: /repo/path \n', 'no_gitdir': 'junk\n', 'empty': '',}def current(contents): gitdir = ( contents .split('\n') .map(lambda line: line.strip()) .find(lambda line: line.startswith('gitdir:')) .removeprefix('gitdir:') .strip() if any(line.strip().startswith('gitdir:') for line in contents.split('\n')) else None ) return gitdirfor name, value in cases.items(): print(name, repr(current(value)))PY

Repository: pingdotgg/t3code

Length of output: 10757


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== focused test command availability/state =="command -v vp ||truecommand -v find ||trueecho"== deterministic scan behavior for parser condition =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_gitdir(contents): gitdir = next( (line.strip().removeprefix("gitdir:").strip() for line in contents.split("\n") if line.strip().startswith("gitdir:")), None, ) if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirdef proposed_gitdir(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() gitdir = s.removeprefix("gitdir:").strip() if s.startswith("gitdir:") else None if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_gitdir(contents) p = proposed_gitdir(contents) print(f"{name}|{c[0] if c[0] is not None else None}|{c[1]}|{p[0] if p[0] is not None else None}|{p[1]}")PYecho"== check package scripts/tests =="
cat -n package.json | sed -n '1,160p'2>/dev/null ||true
cat -n packages/shared/package.json | sed -n '1,160p'2>/dev/null ||true

Repository: pingdotgg/t3code

Length of output: 464


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== deterministic scan behavior for .git parser =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_result(contents): for line in contents.split("\n"): s = line.strip() if s.startswith("gitdir:"): gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdir return None, Nonedef proposed_result(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() if not s.startswith("gitdir:"): return None, None gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_result(contents) p = proposed_result(contents) print(f"{name}|{c[0]}|{c[1]}|{p[0]}|{p[1]}")PYecho"== package.json scripts =="if [ -f package.json ];then
python3 - <<'PY'import jsonfrom pathlib import Pathfor path in [Path("package.json"), Path("packages/shared/package.json")]: if path.exists(): data = json.loads(path.read_text()) print(path) print(json.dumps(data.get("scripts", {}), indent=2, sort_keys=True))PYfi

Repository: pingdotgg/t3code

Length of output: 3358


Reject malformed .git pointer files.

pointsAtLinkedWorktree() accepts later gitdir: lines after arbitrary content, so .git with junk\ngitdir: /elsewhere/.git/worktrees/x can be treated as a linked worktree. Parse only the first pointer line and add a regression fixture.

Proposed fix
- const gitdir = gitFileContents- .split(/\r?\n/)- .map((line) => line.trim())- .find((line) => line.startsWith("gitdir:"))- ?.slice("gitdir:".length)- .trim();+ const [pointerLine = ""] = gitFileContents.split(/\r?\n/, 1);+ const gitdir = pointerLine.trim().startsWith("gitdir:")+ ? pointerLine.trim().slice("gitdir:".length).trim()+ : undefined;
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
constgitdir=gitFileContents
.split(/\r?\n/)
.map((line)=>line.trim())
.find((line)=>line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();
const[pointerLine=""]=gitFileContents.split(/\r?\n/,1);
constgitdir=pointerLine.trim().startsWith("gitdir:")
? pointerLine.trim().slice("gitdir:".length).trim()
: undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/shared/src/devHome.ts` around lines 28 - 33, Update
pointsAtLinkedWorktree() to validate the .git pointer file using only its first
meaningful line, rejecting files with arbitrary content before a gitdir:
declaration instead of accepting later lines. Preserve valid linked-worktree
resolution and add a regression fixture covering junk followed by a gitdir:
line.

Source: Coding guidelines

@t3dotggt3dotgg changed the title Keep worktree dev state isolatedfeat(dev): keep worktree dev state isolated on T3 Code dev serversJul 26, 2026
@t3dotgg
t3dotgg merged commit a17cbc3 into mainJul 26, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the agent/dev-worktree-isolation branch July 26, 2026 22:27
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
Refresh, not reproduce: both newly added topics were cut from current
upstream main, so reproducing onto the locked 5719e8a would have
dragged pingdotgg#4555 in through a merge rather than taking it as the base.
All twelve conflicts replayed verbatim from the previous build except
t3code/local/build-provenance, which is new and had one genuine two-topic
conflict in SettingsSidebarNav.tsx: the stack has restructured the flat
nav into Client/Environment groups. Build went in the Client group -- it
describes the bundle this client is running, which does not change with
the selected environment.
Also corrects three audit exceptions that claimed chat.newEnvironment and
project.add "remain in DEFAULT_KEYBINDINGS". They do not. The commands
survive and stay invocable from the command palette, but the client-owned
keybindings topic reassigns mod+shift+n to chat.newLocal and carries
neither default rule into packages/contracts. Verified identical in the
previously published 16d053b and d596d17, so this is inherited rather
than dropped here -- but the old wording would have hidden a real drop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675
**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
andreasmolnardev pushed a commit to andreasmolnardev/codewise that referenced this pull request Jul 28, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 <noreply@anthropic.com>
* 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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: mel <mcmelon@nodiumhosting.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 2, 2026
Brings in 81 upstream commits (up to v0.0.31, "fix(web): align remote
server update action" pingdotgg#4731). One file conflicted: apps/web/vite.config.ts.
Upstream independently shipped single-origin browser dev (pingdotgg#4555/pingdotgg#4556/pingdotgg#4608
— Tailscale sharing, isolated worktree dev state, browser-blocked port
avoidance), which covers the same ground as this fork's proxy-origin work in
pingdotgg#3. The conflict is resolved by taking upstream's implementation wholesale and
re-applying only what is genuinely fork-specific on top:
- T3CODE_DEV_PROXY_TARGET / T3CODE_PROXY_TARGET_OVERRIDE / T3CODE_PROXY_TARGET
/ MOATLESS_BASE_URL still select the proxy target, and now take precedence
over upstream's T3CODE_PORT-derived default, which the dev runner always
sets. Naming a target also implies single-origin mode, so VITE_HTTP_URL and
VITE_WS_URL stay blank and the browser resolves the backend from its own
origin.
- VITE_MOATLESS_PROXY_AUTH is still defined for environments/primary/auth.ts.
- T3CODE_ALLOWED_HOSTS is kept as an alias of upstream's new
T3CODE_DEV_ALLOWED_HOSTS (deployments inject the former), along with the
`true` escape hatch. Upstream's implicit .ts.net entry is preserved.
- The NODE_ENV=production pin for `vite serve` is kept; hosted sandboxes still
export it process-wide.
Dropped as superseded:
- T3CODE_HMR_HOST and its dev-runner plumbing. Upstream now deletes an
inherited HOST for every non-desktop mode and gates the HMR pin on
`explicitHost`, which is the same fix with upstream's own tests
(scripts/dev-runner.test.ts "drops an inherited HOST in <mode> mode").
scripts/dev-runner.ts and its test now match upstream exactly.
- The separate /attachments proxy entry. Prefixes now come from
packages/shared/src/devProxy.ts, and attachments moved under
/api/assets (ASSET_ROUTE_PREFIX), which /api already covers.
Verified: pnpm typecheck clean across all 15 projects; pnpm test green
(apps/web 1673, scripts 197, full monorepo suite otherwise passing — one
load-induced 15s timeout in the upstream-owned
src/lib/stashImageCompression.test.ts, which passes in isolation);
pnpm lint exit 0; pnpm fmt:check clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation
Jul 26, 2026
Merged

feat(dev): keep worktree dev state isolated on T3 Code dev servers#4555
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation

Conversation

@t3dotgg

@t3dotggt3dotgg commented Jul 26, 2026

Copy link
Copy Markdown
Member

Note

Dev mode overhaul — PR 1 of 3. The stack moves from worktree-isolated dev statesingle-origin and Tailscale sharingpairing and seed utilities. This PR establishes the foundation; #4556 is stacked on it.

What

  • Resolve linked worktree roots and default development state to that worktree’s ignored .t3 directory.
  • Keep an explicit --home-dir authoritative while preventing an ambient T3CODE_HOME from selecting the installed app’s live data.
  • Document and test the resolution rules.

Why

A dev command launched from a linked worktree could otherwise inherit the shared application home and write development state into the database used by the installed app.

Impact

This is the foundational slice of the dev-server overhaul. It changes only worktree state isolation and is the base for the two follow-up PRs.

Verification

  • vp test run packages/shared/src/devHome.test.ts scripts/dev-runner.test.ts (32 tests)
  • targeted lint
  • vp run --filter=@t3tools/shared typecheck

Note

Isolate dev state to the linked git worktree's .t3 directory by default

  • Adds resolveGitWorktreePath and resolveWorktreeT3Home utilities in packages/shared/src/devHome.ts to detect when the process runs inside a linked git worktree and derive its local .t3 path.
  • Updates scripts/dev-runner.ts to apply a new precedence order: explicit --home-dir > worktree-local <worktree>/.t3 > ambient T3CODE_HOME. Blank --home-dir is treated as unset.
  • Removes the implicit T3CODE_HOME fallback from the --home-dir CLI flag; absence of the flag now delegates to the new precedence logic.
  • Updates docs and AGENTS.md to document the new precedence rules, including the note that submodules are not worktrees.
  • Behavioral Change: when running inside a linked worktree, the dev server now ignores T3CODE_HOME unless --home-dir is absent and no worktree .t3 is detected.

Macroscope summarized 6404fc1.


Note

Medium Risk
Changes which SQLite database dev commands use in worktrees (behavioral shift away from shared/live userdata); logic is well-tested but mis-detection could still point at the wrong home.

Overview
Linked git worktrees now get an isolated dev data directory at <worktree>/.t3 (userdata under <worktree>/.t3/userdata) when you run vp run dev, so feature work does not inherit the installed app’s shared home.

The dev runner resolves home in order: explicit --home-dir (whitespace-only counts as unset), then worktree .t3, then ambient T3CODE_HOME. Worktree detection walks up from cwd, treats a .gitfile whose gitdir: ends in worktrees/<name> as a linked worktree (not main checkout, submodules, or invalid pointers), and is implemented in new @t3tools/shared/devHome helpers with tests. createDevRunnerEnv no longer merges ambient T3CODE_HOME when no explicit base dir is passed; precedence is applied in runDevRunnerWithInput using injectable HostProcessWorkingDirectory. Agent docs and test-t3-app / scripts reference reflect the new default and pairing/SQLite paths for worktree-local state.

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

Summary by CodeRabbit

  • New Features

    • Development environments in linked worktrees now use a worktree-local .t3 directory by default.
    • Added clear precedence for development home selection: explicit --home-dir, worktree .t3, then ambient configuration.
    • Added a shared development-home export for tooling integrations.
  • Documentation

    • Clarified development server setup, state storage, isolation, and pairing-token recovery guidance.
  • Tests

    • Added coverage for worktree detection and development-home precedence across repository layouts and configuration scenarios.

@coderabbitai

coderabbitaiBot commented Jul 26, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Title check✅ PassedThe title clearly matches the main change: isolating worktree dev state on T3 dev servers.
Description check✅ PassedThe PR description covers what changed, why, and verification; the missing checklist/UI section is non-critical here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/dev-worktree-isolation

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-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
@t3dotgg
t3dotgg marked this pull request as ready for review July 26, 2026 05:21
Comment threadpackages/shared/src/devHome.ts Outdated
Comment threadscripts/dev-runner.ts Outdated

@cursorcursorBot 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 2 potential issues.

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 2654583. Configure here.

Comment threadscripts/dev-runner.ts Outdated
Comment threadpackages/shared/src/devHome.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes runtime behavior by modifying how dev servers resolve their home directory, with worktree-local .t3 now outranking ambient T3CODE_HOME. While well-tested and scoped to dev scenarios, this precedence change warrants human review.

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

A submodule's `.git` is also a file, so the file-vs-directory check alone
classified every submodule as a linked worktree and handed it a
worktree-local `.t3`. Read the `gitdir:` pointer and require it to land in
`.git/worktrees` (compared as path segments, not a substring).
Resolve cwd through a HostProcessWorkingDirectory reference rather than
calling process.cwd() directly, so the precedence chain is testable.
Add tests for the submodule and malformed-`.git`-file cases, plus
end-to-end coverage of all four home-precedence outcomes, which had no
test before. Document that worktree state lands in `.t3/userdata`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@t3dotgg

Copy link
Copy Markdown
MemberAuthor

Reviewed and pushed fixes in 2a3ef8c.

Findings

1. Submodules were misclassified as worktrees (correctness bug)

resolveGitWorktreePath treated any .gitfile as a linked worktree. But a git submodule's .git is also a file — it just points somewhere else:

worktree: gitdir: /repo/.git/worktrees/x
submodule: gitdir: ../.git/modules/sub

Verified against a real submodule, the helper returned the submodule root, so vp run dev from inside one would silently write state to <submodule>/.t3 — a directory that is not gitignored by the parent repo's .gitignore. Fixed by parsing the gitdir: pointer and requiring .git/worktrees as path segments (not a substring, so a directory legitimately named worktrees can't false-positive). A malformed or unreadable .git file now falls through to the normal precedence rather than claiming a worktree.

2. process.cwd() read directly, making precedence untestable

runDevRunnerWithInput called process.cwd() inline while reading every other ambient input through a Context.Reference. That's why the precedence chain — the actual point of this PR — had zero test coverage: there was no way to vary cwd. Added HostProcessWorkingDirectory alongside the existing HostProcessEnvironment/HostProcessPlatform references and routed the call through it.

3. Precedence chain had no end-to-end test

devHome.test.ts covered the helper and createDevRunnerEnv covered env construction, but nothing tested that they compose into the documented --home-dir > worktree .t3 > T3CODE_HOME > default order. Added four tests asserting the T3CODE_HOME actually handed to the spawned process for each branch.

4. Stale doc claim

test-t3-app/SKILL.md said the <base>/dev fallback applies to "an implicit dev home." A worktree .t3 is passed as an explicit base dir, so it resolves to .t3/userdata, not .t3/dev — worth stating since the skill tells agents where to find state.sqlite.

Verification

  • vp test run packages/shared scripts — 479 passed (38 in the two touched files, up from 32)
  • vp run --filter=@t3tools/shared typecheck, scripts typecheck — clean
  • lint on all touched files — clean
  • Manual --dry-run across all four paths:
cwdambient T3CODE_HOMEflagresolved baseDir
worktreeset<worktree>/.t3
worktreeset--home-dirthe flag
main checkoutset/home/theo/.t3
submoduleset/home/theo/.t3

The core design is right and the ambient-T3CODE_HOME hazard it addresses is real — I hit exactly that setup locally (T3CODE_HOME=/home/theo/.t3), where the old behavior would have pointed a worktree dev server at the installed app's live userdata database.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
Comment threadpackages/shared/src/devHome.ts Outdated
The `.git/worktrees` segment check rejected worktrees whose common dir is
not named `.git`. A worktree of a bare repo points at
`<repo>.git/worktrees/<name>`, and $GIT_COMMON_DIR can be anything. Git
always uses the `worktrees/<name>` tail, so match on that instead;
`<git-dir>/modules/<name>` still fails it.
A blank `--home-dir` also counted as a selection under `??`, skipping the
worktree default and landing on the shared home — the outcome this
precedence exists to prevent. Trim before choosing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/shared/src/devHome.ts`:
- Around line 28-33: Update pointsAtLinkedWorktree() to validate the .git
pointer file using only its first meaningful line, rejecting files with
arbitrary content before a gitdir: declaration instead of accepting later lines.
Preserve valid linked-worktree resolution and add a regression fixture covering
junk followed by a gitdir: line.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b5bb3d2-5c90-4ecb-a211-9582b446b766

📥 Commits

Reviewing files that changed from the base of the PR and between 5719e8a and 6404fc1.

📒 Files selected for processing (9)
  • .agents/skills/test-t3-app/SKILL.md
  • AGENTS.md
  • docs/reference/scripts.md
  • packages/shared/package.json
  • packages/shared/src/devHome.test.ts
  • packages/shared/src/devHome.ts
  • packages/shared/src/hostProcess.ts
  • scripts/dev-runner.test.ts
  • scripts/dev-runner.ts

Comment on lines +28 to +33
const gitdir = gitFileContents
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== locate devHome =="
fd -a 'devHome\.'.| sed 's#^\./##'echo"== diff/stat summary =="
git diff --stat ||trueecho"== inspect packages/shared/src/devHome.ts =="if [ -f packages/shared/src/devHome.ts ];then
nl -ba packages/shared/src/devHome.ts | sed -n '1,140p'fiecho"== search devHome usages/tests =="
rg -n "devHome|linked worktree|worktrees|gitdir|\.t3" packages/shared -S ||true

Repository: pingdotgg/t3code

Length of output: 390


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== packages/shared/src/devHome.ts =="
cat -n packages/shared/src/devHome.ts | sed -n '1,160p'echo"== related tests =="
cat -n packages/shared/src/devHome.test.ts | sed -n '1,220p'echo"== behavioral parser probe from source text =="
python3 - <<'PY'raw = open('packages/shared/src/devHome.ts', encoding='utf-8').read()print('finds split/find:', 'find((line) => line.startsWith("gitdir:"))' in raw)print('contains .split limit:', re := __import__('re'); bool(re.search(r'split\([^;]*,\\s*1\\s*\)', raw)))cases = { 'single': 'gitdir: /repo/path\n', 'junk_after': 'junk\n gitdir: /repo/path \n', 'junk_before': '\n junk\n gitdir: /repo/path \n', 'no_gitdir': 'junk\n', 'empty': '',}def current(contents): gitdir = ( contents .split('\n') .map(lambda line: line.strip()) .find(lambda line: line.startswith('gitdir:')) .removeprefix('gitdir:') .strip() if any(line.strip().startswith('gitdir:') for line in contents.split('\n')) else None ) return gitdirfor name, value in cases.items(): print(name, repr(current(value)))PY

Repository: pingdotgg/t3code

Length of output: 10757


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== focused test command availability/state =="command -v vp ||truecommand -v find ||trueecho"== deterministic scan behavior for parser condition =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_gitdir(contents): gitdir = next( (line.strip().removeprefix("gitdir:").strip() for line in contents.split("\n") if line.strip().startswith("gitdir:")), None, ) if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirdef proposed_gitdir(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() gitdir = s.removeprefix("gitdir:").strip() if s.startswith("gitdir:") else None if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_gitdir(contents) p = proposed_gitdir(contents) print(f"{name}|{c[0] if c[0] is not None else None}|{c[1]}|{p[0] if p[0] is not None else None}|{p[1]}")PYecho"== check package scripts/tests =="
cat -n package.json | sed -n '1,160p'2>/dev/null ||true
cat -n packages/shared/package.json | sed -n '1,160p'2>/dev/null ||true

Repository: pingdotgg/t3code

Length of output: 464


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== deterministic scan behavior for .git parser =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_result(contents): for line in contents.split("\n"): s = line.strip() if s.startswith("gitdir:"): gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdir return None, Nonedef proposed_result(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() if not s.startswith("gitdir:"): return None, None gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_result(contents) p = proposed_result(contents) print(f"{name}|{c[0]}|{c[1]}|{p[0]}|{p[1]}")PYecho"== package.json scripts =="if [ -f package.json ];then
python3 - <<'PY'import jsonfrom pathlib import Pathfor path in [Path("package.json"), Path("packages/shared/package.json")]: if path.exists(): data = json.loads(path.read_text()) print(path) print(json.dumps(data.get("scripts", {}), indent=2, sort_keys=True))PYfi

Repository: pingdotgg/t3code

Length of output: 3358


Reject malformed .git pointer files.

pointsAtLinkedWorktree() accepts later gitdir: lines after arbitrary content, so .git with junk\ngitdir: /elsewhere/.git/worktrees/x can be treated as a linked worktree. Parse only the first pointer line and add a regression fixture.

Proposed fix
- const gitdir = gitFileContents- .split(/\r?\n/)- .map((line) => line.trim())- .find((line) => line.startsWith("gitdir:"))- ?.slice("gitdir:".length)- .trim();+ const [pointerLine = ""] = gitFileContents.split(/\r?\n/, 1);+ const gitdir = pointerLine.trim().startsWith("gitdir:")+ ? pointerLine.trim().slice("gitdir:".length).trim()+ : undefined;
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
constgitdir=gitFileContents
.split(/\r?\n/)
.map((line)=>line.trim())
.find((line)=>line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();
const[pointerLine=""]=gitFileContents.split(/\r?\n/,1);
constgitdir=pointerLine.trim().startsWith("gitdir:")
? pointerLine.trim().slice("gitdir:".length).trim()
: undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/shared/src/devHome.ts` around lines 28 - 33, Update
pointsAtLinkedWorktree() to validate the .git pointer file using only its first
meaningful line, rejecting files with arbitrary content before a gitdir:
declaration instead of accepting later lines. Preserve valid linked-worktree
resolution and add a regression fixture covering junk followed by a gitdir:
line.

Source: Coding guidelines

@t3dotggt3dotgg changed the title Keep worktree dev state isolatedfeat(dev): keep worktree dev state isolated on T3 Code dev serversJul 26, 2026
@t3dotgg
t3dotgg merged commit a17cbc3 into mainJul 26, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the agent/dev-worktree-isolation branch July 26, 2026 22:27
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
Refresh, not reproduce: both newly added topics were cut from current
upstream main, so reproducing onto the locked 5719e8a would have
dragged pingdotgg#4555 in through a merge rather than taking it as the base.
All twelve conflicts replayed verbatim from the previous build except
t3code/local/build-provenance, which is new and had one genuine two-topic
conflict in SettingsSidebarNav.tsx: the stack has restructured the flat
nav into Client/Environment groups. Build went in the Client group -- it
describes the bundle this client is running, which does not change with
the selected environment.
Also corrects three audit exceptions that claimed chat.newEnvironment and
project.add "remain in DEFAULT_KEYBINDINGS". They do not. The commands
survive and stay invocable from the command palette, but the client-owned
keybindings topic reassigns mod+shift+n to chat.newLocal and carries
neither default rule into packages/contracts. Verified identical in the
previously published 16d053b and d596d17, so this is inherited rather
than dropped here -- but the old wording would have hidden a real drop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675
**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
andreasmolnardev pushed a commit to andreasmolnardev/codewise that referenced this pull request Jul 28, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 <noreply@anthropic.com>
* 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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: mel <mcmelon@nodiumhosting.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 2, 2026
Brings in 81 upstream commits (up to v0.0.31, "fix(web): align remote
server update action" pingdotgg#4731). One file conflicted: apps/web/vite.config.ts.
Upstream independently shipped single-origin browser dev (pingdotgg#4555/pingdotgg#4556/pingdotgg#4608
— Tailscale sharing, isolated worktree dev state, browser-blocked port
avoidance), which covers the same ground as this fork's proxy-origin work in
pingdotgg#3. The conflict is resolved by taking upstream's implementation wholesale and
re-applying only what is genuinely fork-specific on top:
- T3CODE_DEV_PROXY_TARGET / T3CODE_PROXY_TARGET_OVERRIDE / T3CODE_PROXY_TARGET
/ MOATLESS_BASE_URL still select the proxy target, and now take precedence
over upstream's T3CODE_PORT-derived default, which the dev runner always
sets. Naming a target also implies single-origin mode, so VITE_HTTP_URL and
VITE_WS_URL stay blank and the browser resolves the backend from its own
origin.
- VITE_MOATLESS_PROXY_AUTH is still defined for environments/primary/auth.ts.
- T3CODE_ALLOWED_HOSTS is kept as an alias of upstream's new
T3CODE_DEV_ALLOWED_HOSTS (deployments inject the former), along with the
`true` escape hatch. Upstream's implicit .ts.net entry is preserved.
- The NODE_ENV=production pin for `vite serve` is kept; hosted sandboxes still
export it process-wide.
Dropped as superseded:
- T3CODE_HMR_HOST and its dev-runner plumbing. Upstream now deletes an
inherited HOST for every non-desktop mode and gates the HMR pin on
`explicitHost`, which is the same fix with upstream's own tests
(scripts/dev-runner.test.ts "drops an inherited HOST in <mode> mode").
scripts/dev-runner.ts and its test now match upstream exactly.
- The separate /attachments proxy entry. Prefixes now come from
packages/shared/src/devProxy.ts, and attachments moved under
/api/assets (ASSET_ROUTE_PREFIX), which /api already covers.
Verified: pnpm typecheck clean across all 15 projects; pnpm test green
(apps/web 1673, scripts 197, full monorepo suite otherwise passing — one
load-induced 15s timeout in the upstream-owned
src/lib/stashImageCompression.test.ts, which passes in isolation);
pnpm lint exit 0; pnpm fmt:check clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation
Jul 26, 2026
Merged

feat(dev): keep worktree dev state isolated on T3 Code dev servers#4555
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation

Conversation

@t3dotgg

@t3dotggt3dotgg commented Jul 26, 2026

Copy link
Copy Markdown
Member

Note

Dev mode overhaul — PR 1 of 3. The stack moves from worktree-isolated dev statesingle-origin and Tailscale sharingpairing and seed utilities. This PR establishes the foundation; #4556 is stacked on it.

What

  • Resolve linked worktree roots and default development state to that worktree’s ignored .t3 directory.
  • Keep an explicit --home-dir authoritative while preventing an ambient T3CODE_HOME from selecting the installed app’s live data.
  • Document and test the resolution rules.

Why

A dev command launched from a linked worktree could otherwise inherit the shared application home and write development state into the database used by the installed app.

Impact

This is the foundational slice of the dev-server overhaul. It changes only worktree state isolation and is the base for the two follow-up PRs.

Verification

  • vp test run packages/shared/src/devHome.test.ts scripts/dev-runner.test.ts (32 tests)
  • targeted lint
  • vp run --filter=@t3tools/shared typecheck

Note

Isolate dev state to the linked git worktree's .t3 directory by default

  • Adds resolveGitWorktreePath and resolveWorktreeT3Home utilities in packages/shared/src/devHome.ts to detect when the process runs inside a linked git worktree and derive its local .t3 path.
  • Updates scripts/dev-runner.ts to apply a new precedence order: explicit --home-dir > worktree-local <worktree>/.t3 > ambient T3CODE_HOME. Blank --home-dir is treated as unset.
  • Removes the implicit T3CODE_HOME fallback from the --home-dir CLI flag; absence of the flag now delegates to the new precedence logic.
  • Updates docs and AGENTS.md to document the new precedence rules, including the note that submodules are not worktrees.
  • Behavioral Change: when running inside a linked worktree, the dev server now ignores T3CODE_HOME unless --home-dir is absent and no worktree .t3 is detected.

Macroscope summarized 6404fc1.


Note

Medium Risk
Changes which SQLite database dev commands use in worktrees (behavioral shift away from shared/live userdata); logic is well-tested but mis-detection could still point at the wrong home.

Overview
Linked git worktrees now get an isolated dev data directory at <worktree>/.t3 (userdata under <worktree>/.t3/userdata) when you run vp run dev, so feature work does not inherit the installed app’s shared home.

The dev runner resolves home in order: explicit --home-dir (whitespace-only counts as unset), then worktree .t3, then ambient T3CODE_HOME. Worktree detection walks up from cwd, treats a .gitfile whose gitdir: ends in worktrees/<name> as a linked worktree (not main checkout, submodules, or invalid pointers), and is implemented in new @t3tools/shared/devHome helpers with tests. createDevRunnerEnv no longer merges ambient T3CODE_HOME when no explicit base dir is passed; precedence is applied in runDevRunnerWithInput using injectable HostProcessWorkingDirectory. Agent docs and test-t3-app / scripts reference reflect the new default and pairing/SQLite paths for worktree-local state.

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

Summary by CodeRabbit

  • New Features

    • Development environments in linked worktrees now use a worktree-local .t3 directory by default.
    • Added clear precedence for development home selection: explicit --home-dir, worktree .t3, then ambient configuration.
    • Added a shared development-home export for tooling integrations.
  • Documentation

    • Clarified development server setup, state storage, isolation, and pairing-token recovery guidance.
  • Tests

    • Added coverage for worktree detection and development-home precedence across repository layouts and configuration scenarios.

@coderabbitai

coderabbitaiBot commented Jul 26, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Title check✅ PassedThe title clearly matches the main change: isolating worktree dev state on T3 dev servers.
Description check✅ PassedThe PR description covers what changed, why, and verification; the missing checklist/UI section is non-critical here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/dev-worktree-isolation

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-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
@t3dotgg
t3dotgg marked this pull request as ready for review July 26, 2026 05:21
Comment threadpackages/shared/src/devHome.ts Outdated
Comment threadscripts/dev-runner.ts Outdated

@cursorcursorBot 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 2 potential issues.

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 2654583. Configure here.

Comment threadscripts/dev-runner.ts Outdated
Comment threadpackages/shared/src/devHome.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes runtime behavior by modifying how dev servers resolve their home directory, with worktree-local .t3 now outranking ambient T3CODE_HOME. While well-tested and scoped to dev scenarios, this precedence change warrants human review.

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

A submodule's `.git` is also a file, so the file-vs-directory check alone
classified every submodule as a linked worktree and handed it a
worktree-local `.t3`. Read the `gitdir:` pointer and require it to land in
`.git/worktrees` (compared as path segments, not a substring).
Resolve cwd through a HostProcessWorkingDirectory reference rather than
calling process.cwd() directly, so the precedence chain is testable.
Add tests for the submodule and malformed-`.git`-file cases, plus
end-to-end coverage of all four home-precedence outcomes, which had no
test before. Document that worktree state lands in `.t3/userdata`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@t3dotgg

Copy link
Copy Markdown
MemberAuthor

Reviewed and pushed fixes in 2a3ef8c.

Findings

1. Submodules were misclassified as worktrees (correctness bug)

resolveGitWorktreePath treated any .gitfile as a linked worktree. But a git submodule's .git is also a file — it just points somewhere else:

worktree: gitdir: /repo/.git/worktrees/x
submodule: gitdir: ../.git/modules/sub

Verified against a real submodule, the helper returned the submodule root, so vp run dev from inside one would silently write state to <submodule>/.t3 — a directory that is not gitignored by the parent repo's .gitignore. Fixed by parsing the gitdir: pointer and requiring .git/worktrees as path segments (not a substring, so a directory legitimately named worktrees can't false-positive). A malformed or unreadable .git file now falls through to the normal precedence rather than claiming a worktree.

2. process.cwd() read directly, making precedence untestable

runDevRunnerWithInput called process.cwd() inline while reading every other ambient input through a Context.Reference. That's why the precedence chain — the actual point of this PR — had zero test coverage: there was no way to vary cwd. Added HostProcessWorkingDirectory alongside the existing HostProcessEnvironment/HostProcessPlatform references and routed the call through it.

3. Precedence chain had no end-to-end test

devHome.test.ts covered the helper and createDevRunnerEnv covered env construction, but nothing tested that they compose into the documented --home-dir > worktree .t3 > T3CODE_HOME > default order. Added four tests asserting the T3CODE_HOME actually handed to the spawned process for each branch.

4. Stale doc claim

test-t3-app/SKILL.md said the <base>/dev fallback applies to "an implicit dev home." A worktree .t3 is passed as an explicit base dir, so it resolves to .t3/userdata, not .t3/dev — worth stating since the skill tells agents where to find state.sqlite.

Verification

  • vp test run packages/shared scripts — 479 passed (38 in the two touched files, up from 32)
  • vp run --filter=@t3tools/shared typecheck, scripts typecheck — clean
  • lint on all touched files — clean
  • Manual --dry-run across all four paths:
cwdambient T3CODE_HOMEflagresolved baseDir
worktreeset<worktree>/.t3
worktreeset--home-dirthe flag
main checkoutset/home/theo/.t3
submoduleset/home/theo/.t3

The core design is right and the ambient-T3CODE_HOME hazard it addresses is real — I hit exactly that setup locally (T3CODE_HOME=/home/theo/.t3), where the old behavior would have pointed a worktree dev server at the installed app's live userdata database.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
Comment threadpackages/shared/src/devHome.ts Outdated
The `.git/worktrees` segment check rejected worktrees whose common dir is
not named `.git`. A worktree of a bare repo points at
`<repo>.git/worktrees/<name>`, and $GIT_COMMON_DIR can be anything. Git
always uses the `worktrees/<name>` tail, so match on that instead;
`<git-dir>/modules/<name>` still fails it.
A blank `--home-dir` also counted as a selection under `??`, skipping the
worktree default and landing on the shared home — the outcome this
precedence exists to prevent. Trim before choosing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/shared/src/devHome.ts`:
- Around line 28-33: Update pointsAtLinkedWorktree() to validate the .git
pointer file using only its first meaningful line, rejecting files with
arbitrary content before a gitdir: declaration instead of accepting later lines.
Preserve valid linked-worktree resolution and add a regression fixture covering
junk followed by a gitdir: line.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b5bb3d2-5c90-4ecb-a211-9582b446b766

📥 Commits

Reviewing files that changed from the base of the PR and between 5719e8a and 6404fc1.

📒 Files selected for processing (9)
  • .agents/skills/test-t3-app/SKILL.md
  • AGENTS.md
  • docs/reference/scripts.md
  • packages/shared/package.json
  • packages/shared/src/devHome.test.ts
  • packages/shared/src/devHome.ts
  • packages/shared/src/hostProcess.ts
  • scripts/dev-runner.test.ts
  • scripts/dev-runner.ts

Comment on lines +28 to +33
const gitdir = gitFileContents
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== locate devHome =="
fd -a 'devHome\.'.| sed 's#^\./##'echo"== diff/stat summary =="
git diff --stat ||trueecho"== inspect packages/shared/src/devHome.ts =="if [ -f packages/shared/src/devHome.ts ];then
nl -ba packages/shared/src/devHome.ts | sed -n '1,140p'fiecho"== search devHome usages/tests =="
rg -n "devHome|linked worktree|worktrees|gitdir|\.t3" packages/shared -S ||true

Repository: pingdotgg/t3code

Length of output: 390


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== packages/shared/src/devHome.ts =="
cat -n packages/shared/src/devHome.ts | sed -n '1,160p'echo"== related tests =="
cat -n packages/shared/src/devHome.test.ts | sed -n '1,220p'echo"== behavioral parser probe from source text =="
python3 - <<'PY'raw = open('packages/shared/src/devHome.ts', encoding='utf-8').read()print('finds split/find:', 'find((line) => line.startsWith("gitdir:"))' in raw)print('contains .split limit:', re := __import__('re'); bool(re.search(r'split\([^;]*,\\s*1\\s*\)', raw)))cases = { 'single': 'gitdir: /repo/path\n', 'junk_after': 'junk\n gitdir: /repo/path \n', 'junk_before': '\n junk\n gitdir: /repo/path \n', 'no_gitdir': 'junk\n', 'empty': '',}def current(contents): gitdir = ( contents .split('\n') .map(lambda line: line.strip()) .find(lambda line: line.startswith('gitdir:')) .removeprefix('gitdir:') .strip() if any(line.strip().startswith('gitdir:') for line in contents.split('\n')) else None ) return gitdirfor name, value in cases.items(): print(name, repr(current(value)))PY

Repository: pingdotgg/t3code

Length of output: 10757


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== focused test command availability/state =="command -v vp ||truecommand -v find ||trueecho"== deterministic scan behavior for parser condition =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_gitdir(contents): gitdir = next( (line.strip().removeprefix("gitdir:").strip() for line in contents.split("\n") if line.strip().startswith("gitdir:")), None, ) if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirdef proposed_gitdir(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() gitdir = s.removeprefix("gitdir:").strip() if s.startswith("gitdir:") else None if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_gitdir(contents) p = proposed_gitdir(contents) print(f"{name}|{c[0] if c[0] is not None else None}|{c[1]}|{p[0] if p[0] is not None else None}|{p[1]}")PYecho"== check package scripts/tests =="
cat -n package.json | sed -n '1,160p'2>/dev/null ||true
cat -n packages/shared/package.json | sed -n '1,160p'2>/dev/null ||true

Repository: pingdotgg/t3code

Length of output: 464


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== deterministic scan behavior for .git parser =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_result(contents): for line in contents.split("\n"): s = line.strip() if s.startswith("gitdir:"): gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdir return None, Nonedef proposed_result(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() if not s.startswith("gitdir:"): return None, None gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_result(contents) p = proposed_result(contents) print(f"{name}|{c[0]}|{c[1]}|{p[0]}|{p[1]}")PYecho"== package.json scripts =="if [ -f package.json ];then
python3 - <<'PY'import jsonfrom pathlib import Pathfor path in [Path("package.json"), Path("packages/shared/package.json")]: if path.exists(): data = json.loads(path.read_text()) print(path) print(json.dumps(data.get("scripts", {}), indent=2, sort_keys=True))PYfi

Repository: pingdotgg/t3code

Length of output: 3358


Reject malformed .git pointer files.

pointsAtLinkedWorktree() accepts later gitdir: lines after arbitrary content, so .git with junk\ngitdir: /elsewhere/.git/worktrees/x can be treated as a linked worktree. Parse only the first pointer line and add a regression fixture.

Proposed fix
- const gitdir = gitFileContents- .split(/\r?\n/)- .map((line) => line.trim())- .find((line) => line.startsWith("gitdir:"))- ?.slice("gitdir:".length)- .trim();+ const [pointerLine = ""] = gitFileContents.split(/\r?\n/, 1);+ const gitdir = pointerLine.trim().startsWith("gitdir:")+ ? pointerLine.trim().slice("gitdir:".length).trim()+ : undefined;
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
constgitdir=gitFileContents
.split(/\r?\n/)
.map((line)=>line.trim())
.find((line)=>line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();
const[pointerLine=""]=gitFileContents.split(/\r?\n/,1);
constgitdir=pointerLine.trim().startsWith("gitdir:")
? pointerLine.trim().slice("gitdir:".length).trim()
: undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/shared/src/devHome.ts` around lines 28 - 33, Update
pointsAtLinkedWorktree() to validate the .git pointer file using only its first
meaningful line, rejecting files with arbitrary content before a gitdir:
declaration instead of accepting later lines. Preserve valid linked-worktree
resolution and add a regression fixture covering junk followed by a gitdir:
line.

Source: Coding guidelines

@t3dotggt3dotgg changed the title Keep worktree dev state isolatedfeat(dev): keep worktree dev state isolated on T3 Code dev serversJul 26, 2026
@t3dotgg
t3dotgg merged commit a17cbc3 into mainJul 26, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the agent/dev-worktree-isolation branch July 26, 2026 22:27
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
Refresh, not reproduce: both newly added topics were cut from current
upstream main, so reproducing onto the locked 5719e8a would have
dragged pingdotgg#4555 in through a merge rather than taking it as the base.
All twelve conflicts replayed verbatim from the previous build except
t3code/local/build-provenance, which is new and had one genuine two-topic
conflict in SettingsSidebarNav.tsx: the stack has restructured the flat
nav into Client/Environment groups. Build went in the Client group -- it
describes the bundle this client is running, which does not change with
the selected environment.
Also corrects three audit exceptions that claimed chat.newEnvironment and
project.add "remain in DEFAULT_KEYBINDINGS". They do not. The commands
survive and stay invocable from the command palette, but the client-owned
keybindings topic reassigns mod+shift+n to chat.newLocal and carries
neither default rule into packages/contracts. Verified identical in the
previously published 16d053b and d596d17, so this is inherited rather
than dropped here -- but the old wording would have hidden a real drop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675
**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
andreasmolnardev pushed a commit to andreasmolnardev/codewise that referenced this pull request Jul 28, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 <noreply@anthropic.com>
* 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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: mel <mcmelon@nodiumhosting.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 2, 2026
Brings in 81 upstream commits (up to v0.0.31, "fix(web): align remote
server update action" pingdotgg#4731). One file conflicted: apps/web/vite.config.ts.
Upstream independently shipped single-origin browser dev (pingdotgg#4555/pingdotgg#4556/pingdotgg#4608
— Tailscale sharing, isolated worktree dev state, browser-blocked port
avoidance), which covers the same ground as this fork's proxy-origin work in
pingdotgg#3. The conflict is resolved by taking upstream's implementation wholesale and
re-applying only what is genuinely fork-specific on top:
- T3CODE_DEV_PROXY_TARGET / T3CODE_PROXY_TARGET_OVERRIDE / T3CODE_PROXY_TARGET
/ MOATLESS_BASE_URL still select the proxy target, and now take precedence
over upstream's T3CODE_PORT-derived default, which the dev runner always
sets. Naming a target also implies single-origin mode, so VITE_HTTP_URL and
VITE_WS_URL stay blank and the browser resolves the backend from its own
origin.
- VITE_MOATLESS_PROXY_AUTH is still defined for environments/primary/auth.ts.
- T3CODE_ALLOWED_HOSTS is kept as an alias of upstream's new
T3CODE_DEV_ALLOWED_HOSTS (deployments inject the former), along with the
`true` escape hatch. Upstream's implicit .ts.net entry is preserved.
- The NODE_ENV=production pin for `vite serve` is kept; hosted sandboxes still
export it process-wide.
Dropped as superseded:
- T3CODE_HMR_HOST and its dev-runner plumbing. Upstream now deletes an
inherited HOST for every non-desktop mode and gates the HMR pin on
`explicitHost`, which is the same fix with upstream's own tests
(scripts/dev-runner.test.ts "drops an inherited HOST in <mode> mode").
scripts/dev-runner.ts and its test now match upstream exactly.
- The separate /attachments proxy entry. Prefixes now come from
packages/shared/src/devProxy.ts, and attachments moved under
/api/assets (ASSET_ROUTE_PREFIX), which /api already covers.
Verified: pnpm typecheck clean across all 15 projects; pnpm test green
(apps/web 1673, scripts 197, full monorepo suite otherwise passing — one
load-induced 15s timeout in the upstream-owned
src/lib/stashImageCompression.test.ts, which passes in isolation);
pnpm lint exit 0; pnpm fmt:check clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

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

Merged
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation
Jul 26, 2026
Merged

feat(dev): keep worktree dev state isolated on T3 Code dev servers#4555
t3dotgg merged 3 commits into
mainfrom
agent/dev-worktree-isolation

Conversation

@t3dotgg

@t3dotggt3dotgg commented Jul 26, 2026

Copy link
Copy Markdown
Member

Note

Dev mode overhaul — PR 1 of 3. The stack moves from worktree-isolated dev statesingle-origin and Tailscale sharingpairing and seed utilities. This PR establishes the foundation; #4556 is stacked on it.

What

  • Resolve linked worktree roots and default development state to that worktree’s ignored .t3 directory.
  • Keep an explicit --home-dir authoritative while preventing an ambient T3CODE_HOME from selecting the installed app’s live data.
  • Document and test the resolution rules.

Why

A dev command launched from a linked worktree could otherwise inherit the shared application home and write development state into the database used by the installed app.

Impact

This is the foundational slice of the dev-server overhaul. It changes only worktree state isolation and is the base for the two follow-up PRs.

Verification

  • vp test run packages/shared/src/devHome.test.ts scripts/dev-runner.test.ts (32 tests)
  • targeted lint
  • vp run --filter=@t3tools/shared typecheck

Note

Isolate dev state to the linked git worktree's .t3 directory by default

  • Adds resolveGitWorktreePath and resolveWorktreeT3Home utilities in packages/shared/src/devHome.ts to detect when the process runs inside a linked git worktree and derive its local .t3 path.
  • Updates scripts/dev-runner.ts to apply a new precedence order: explicit --home-dir > worktree-local <worktree>/.t3 > ambient T3CODE_HOME. Blank --home-dir is treated as unset.
  • Removes the implicit T3CODE_HOME fallback from the --home-dir CLI flag; absence of the flag now delegates to the new precedence logic.
  • Updates docs and AGENTS.md to document the new precedence rules, including the note that submodules are not worktrees.
  • Behavioral Change: when running inside a linked worktree, the dev server now ignores T3CODE_HOME unless --home-dir is absent and no worktree .t3 is detected.

Macroscope summarized 6404fc1.


Note

Medium Risk
Changes which SQLite database dev commands use in worktrees (behavioral shift away from shared/live userdata); logic is well-tested but mis-detection could still point at the wrong home.

Overview
Linked git worktrees now get an isolated dev data directory at <worktree>/.t3 (userdata under <worktree>/.t3/userdata) when you run vp run dev, so feature work does not inherit the installed app’s shared home.

The dev runner resolves home in order: explicit --home-dir (whitespace-only counts as unset), then worktree .t3, then ambient T3CODE_HOME. Worktree detection walks up from cwd, treats a .gitfile whose gitdir: ends in worktrees/<name> as a linked worktree (not main checkout, submodules, or invalid pointers), and is implemented in new @t3tools/shared/devHome helpers with tests. createDevRunnerEnv no longer merges ambient T3CODE_HOME when no explicit base dir is passed; precedence is applied in runDevRunnerWithInput using injectable HostProcessWorkingDirectory. Agent docs and test-t3-app / scripts reference reflect the new default and pairing/SQLite paths for worktree-local state.

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

Summary by CodeRabbit

  • New Features

    • Development environments in linked worktrees now use a worktree-local .t3 directory by default.
    • Added clear precedence for development home selection: explicit --home-dir, worktree .t3, then ambient configuration.
    • Added a shared development-home export for tooling integrations.
  • Documentation

    • Clarified development server setup, state storage, isolation, and pairing-token recovery guidance.
  • Tests

    • Added coverage for worktree detection and development-home precedence across repository layouts and configuration scenarios.

@coderabbitai

coderabbitaiBot commented Jul 26, 2026

Copy link
Copy Markdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Title check✅ PassedThe title clearly matches the main change: isolating worktree dev state on T3 dev servers.
Description check✅ PassedThe PR description covers what changed, why, and verification; the missing checklist/UI section is non-critical here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/dev-worktree-isolation

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-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
@t3dotgg
t3dotgg marked this pull request as ready for review July 26, 2026 05:21
Comment threadpackages/shared/src/devHome.ts Outdated
Comment threadscripts/dev-runner.ts Outdated

@cursorcursorBot 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 2 potential issues.

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 2654583. Configure here.

Comment threadscripts/dev-runner.ts Outdated
Comment threadpackages/shared/src/devHome.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes runtime behavior by modifying how dev servers resolve their home directory, with worktree-local .t3 now outranking ambient T3CODE_HOME. While well-tested and scoped to dev scenarios, this precedence change warrants human review.

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

A submodule's `.git` is also a file, so the file-vs-directory check alone
classified every submodule as a linked worktree and handed it a
worktree-local `.t3`. Read the `gitdir:` pointer and require it to land in
`.git/worktrees` (compared as path segments, not a substring).
Resolve cwd through a HostProcessWorkingDirectory reference rather than
calling process.cwd() directly, so the precedence chain is testable.
Add tests for the submodule and malformed-`.git`-file cases, plus
end-to-end coverage of all four home-precedence outcomes, which had no
test before. Document that worktree state lands in `.t3/userdata`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@t3dotgg

Copy link
Copy Markdown
MemberAuthor

Reviewed and pushed fixes in 2a3ef8c.

Findings

1. Submodules were misclassified as worktrees (correctness bug)

resolveGitWorktreePath treated any .gitfile as a linked worktree. But a git submodule's .git is also a file — it just points somewhere else:

worktree: gitdir: /repo/.git/worktrees/x
submodule: gitdir: ../.git/modules/sub

Verified against a real submodule, the helper returned the submodule root, so vp run dev from inside one would silently write state to <submodule>/.t3 — a directory that is not gitignored by the parent repo's .gitignore. Fixed by parsing the gitdir: pointer and requiring .git/worktrees as path segments (not a substring, so a directory legitimately named worktrees can't false-positive). A malformed or unreadable .git file now falls through to the normal precedence rather than claiming a worktree.

2. process.cwd() read directly, making precedence untestable

runDevRunnerWithInput called process.cwd() inline while reading every other ambient input through a Context.Reference. That's why the precedence chain — the actual point of this PR — had zero test coverage: there was no way to vary cwd. Added HostProcessWorkingDirectory alongside the existing HostProcessEnvironment/HostProcessPlatform references and routed the call through it.

3. Precedence chain had no end-to-end test

devHome.test.ts covered the helper and createDevRunnerEnv covered env construction, but nothing tested that they compose into the documented --home-dir > worktree .t3 > T3CODE_HOME > default order. Added four tests asserting the T3CODE_HOME actually handed to the spawned process for each branch.

4. Stale doc claim

test-t3-app/SKILL.md said the <base>/dev fallback applies to "an implicit dev home." A worktree .t3 is passed as an explicit base dir, so it resolves to .t3/userdata, not .t3/dev — worth stating since the skill tells agents where to find state.sqlite.

Verification

  • vp test run packages/shared scripts — 479 passed (38 in the two touched files, up from 32)
  • vp run --filter=@t3tools/shared typecheck, scripts typecheck — clean
  • lint on all touched files — clean
  • Manual --dry-run across all four paths:
cwdambient T3CODE_HOMEflagresolved baseDir
worktreeset<worktree>/.t3
worktreeset--home-dirthe flag
main checkoutset/home/theo/.t3
submoduleset/home/theo/.t3

The core design is right and the ambient-T3CODE_HOME hazard it addresses is real — I hit exactly that setup locally (T3CODE_HOME=/home/theo/.t3), where the old behavior would have pointed a worktree dev server at the installed app's live userdata database.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 26, 2026
Comment threadpackages/shared/src/devHome.ts Outdated
The `.git/worktrees` segment check rejected worktrees whose common dir is
not named `.git`. A worktree of a bare repo points at
`<repo>.git/worktrees/<name>`, and $GIT_COMMON_DIR can be anything. Git
always uses the `worktrees/<name>` tail, so match on that instead;
`<git-dir>/modules/<name>` still fails it.
A blank `--home-dir` also counted as a selection under `??`, skipping the
worktree default and landing on the shared home — the outcome this
precedence exists to prevent. Trim before choosing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/shared/src/devHome.ts`:
- Around line 28-33: Update pointsAtLinkedWorktree() to validate the .git
pointer file using only its first meaningful line, rejecting files with
arbitrary content before a gitdir: declaration instead of accepting later lines.
Preserve valid linked-worktree resolution and add a regression fixture covering
junk followed by a gitdir: line.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b5bb3d2-5c90-4ecb-a211-9582b446b766

📥 Commits

Reviewing files that changed from the base of the PR and between 5719e8a and 6404fc1.

📒 Files selected for processing (9)
  • .agents/skills/test-t3-app/SKILL.md
  • AGENTS.md
  • docs/reference/scripts.md
  • packages/shared/package.json
  • packages/shared/src/devHome.test.ts
  • packages/shared/src/devHome.ts
  • packages/shared/src/hostProcess.ts
  • scripts/dev-runner.test.ts
  • scripts/dev-runner.ts

Comment on lines +28 to +33
const gitdir = gitFileContents
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== locate devHome =="
fd -a 'devHome\.'.| sed 's#^\./##'echo"== diff/stat summary =="
git diff --stat ||trueecho"== inspect packages/shared/src/devHome.ts =="if [ -f packages/shared/src/devHome.ts ];then
nl -ba packages/shared/src/devHome.ts | sed -n '1,140p'fiecho"== search devHome usages/tests =="
rg -n "devHome|linked worktree|worktrees|gitdir|\.t3" packages/shared -S ||true

Repository: pingdotgg/t3code

Length of output: 390


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== packages/shared/src/devHome.ts =="
cat -n packages/shared/src/devHome.ts | sed -n '1,160p'echo"== related tests =="
cat -n packages/shared/src/devHome.test.ts | sed -n '1,220p'echo"== behavioral parser probe from source text =="
python3 - <<'PY'raw = open('packages/shared/src/devHome.ts', encoding='utf-8').read()print('finds split/find:', 'find((line) => line.startsWith("gitdir:"))' in raw)print('contains .split limit:', re := __import__('re'); bool(re.search(r'split\([^;]*,\\s*1\\s*\)', raw)))cases = { 'single': 'gitdir: /repo/path\n', 'junk_after': 'junk\n gitdir: /repo/path \n', 'junk_before': '\n junk\n gitdir: /repo/path \n', 'no_gitdir': 'junk\n', 'empty': '',}def current(contents): gitdir = ( contents .split('\n') .map(lambda line: line.strip()) .find(lambda line: line.startswith('gitdir:')) .removeprefix('gitdir:') .strip() if any(line.strip().startswith('gitdir:') for line in contents.split('\n')) else None ) return gitdirfor name, value in cases.items(): print(name, repr(current(value)))PY

Repository: pingdotgg/t3code

Length of output: 10757


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== focused test command availability/state =="command -v vp ||truecommand -v find ||trueecho"== deterministic scan behavior for parser condition =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_gitdir(contents): gitdir = next( (line.strip().removeprefix("gitdir:").strip() for line in contents.split("\n") if line.strip().startswith("gitdir:")), None, ) if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirdef proposed_gitdir(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() gitdir = s.removeprefix("gitdir:").strip() if s.startswith("gitdir:") else None if gitdir is None: return None segments = gitdir.replace("\\", "/").rstrip("/").split("/") return None if len(segments) < 3 or segments[-2] != "worktrees" else True, gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_gitdir(contents) p = proposed_gitdir(contents) print(f"{name}|{c[0] if c[0] is not None else None}|{c[1]}|{p[0] if p[0] is not None else None}|{p[1]}")PYecho"== check package scripts/tests =="
cat -n package.json | sed -n '1,160p'2>/dev/null ||true
cat -n packages/shared/package.json | sed -n '1,160p'2>/dev/null ||true

Repository: pingdotgg/t3code

Length of output: 464


🏁 Script executed:

#!/bin/bashset -euo pipefail
echo"== deterministic scan behavior for .git parser =="
python3 - <<'PY'samples = [ ("main .git file", "git\nrefs\n"), ("single valid pointer", "gitdir: /elsewhere/.git/worktrees/x\n"), ("malformed pointer with later valid line", "junk\n gitdir: /elsewhere/.git/worktrees/x \n"), ("valid pointer with junk line", "gitdir: /elsewhere/.git/worktrees/x\njunk\n"), ("submodule pointer", "gitdir: ../.git/modules/sub\n"), ("empty unreadable", ""),]def current_result(contents): for line in contents.split("\n"): s = line.strip() if s.startswith("gitdir:"): gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdir return None, Nonedef proposed_result(contents): first = next(iter(contents.split("\n", 1)), "") s = first.strip() if not s.startswith("gitdir:"): return None, None gitdir = s.removeprefix("gitdir:").strip() segments = gitdir.replace("\\", "/").rstrip("/").split("/") return (len(segments) >= 3 and segments[-2] == "worktrees"), gitdirprint("name|current_worktree|current_gitdir|proposed_worktree|proposed_gitdir")for name, contents in samples: c = current_result(contents) p = proposed_result(contents) print(f"{name}|{c[0]}|{c[1]}|{p[0]}|{p[1]}")PYecho"== package.json scripts =="if [ -f package.json ];then
python3 - <<'PY'import jsonfrom pathlib import Pathfor path in [Path("package.json"), Path("packages/shared/package.json")]: if path.exists(): data = json.loads(path.read_text()) print(path) print(json.dumps(data.get("scripts", {}), indent=2, sort_keys=True))PYfi

Repository: pingdotgg/t3code

Length of output: 3358


Reject malformed .git pointer files.

pointsAtLinkedWorktree() accepts later gitdir: lines after arbitrary content, so .git with junk\ngitdir: /elsewhere/.git/worktrees/x can be treated as a linked worktree. Parse only the first pointer line and add a regression fixture.

Proposed fix
- const gitdir = gitFileContents- .split(/\r?\n/)- .map((line) => line.trim())- .find((line) => line.startsWith("gitdir:"))- ?.slice("gitdir:".length)- .trim();+ const [pointerLine = ""] = gitFileContents.split(/\r?\n/, 1);+ const gitdir = pointerLine.trim().startsWith("gitdir:")+ ? pointerLine.trim().slice("gitdir:".length).trim()+ : undefined;
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
constgitdir=gitFileContents
.split(/\r?\n/)
.map((line)=>line.trim())
.find((line)=>line.startsWith("gitdir:"))
?.slice("gitdir:".length)
.trim();
const[pointerLine=""]=gitFileContents.split(/\r?\n/,1);
constgitdir=pointerLine.trim().startsWith("gitdir:")
? pointerLine.trim().slice("gitdir:".length).trim()
: undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/shared/src/devHome.ts` around lines 28 - 33, Update
pointsAtLinkedWorktree() to validate the .git pointer file using only its first
meaningful line, rejecting files with arbitrary content before a gitdir:
declaration instead of accepting later lines. Preserve valid linked-worktree
resolution and add a regression fixture covering junk followed by a gitdir:
line.

Source: Coding guidelines

@t3dotggt3dotgg changed the title Keep worktree dev state isolatedfeat(dev): keep worktree dev state isolated on T3 Code dev serversJul 26, 2026
@t3dotgg
t3dotgg merged commit a17cbc3 into mainJul 26, 2026
16 checks passed
@t3dotgg
t3dotgg deleted the agent/dev-worktree-isolation branch July 26, 2026 22:27
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
Refresh, not reproduce: both newly added topics were cut from current
upstream main, so reproducing onto the locked 5719e8a would have
dragged pingdotgg#4555 in through a merge rather than taking it as the base.
All twelve conflicts replayed verbatim from the previous build except
t3code/local/build-provenance, which is new and had one genuine two-topic
conflict in SettingsSidebarNav.tsx: the stack has restructured the flat
nav into Client/Environment groups. Build went in the Client group -- it
describes the bundle this client is running, which does not change with
the selected environment.
Also corrects three audit exceptions that claimed chat.newEnvironment and
project.add "remain in DEFAULT_KEYBINDINGS". They do not. The commands
survive and stay invocable from the command palette, but the client-owned
keybindings topic reassigns mod+shift+n to chat.newLocal and carries
neither default rule into packages/contracts. Verified identical in the
previously published 16d053b and d596d17, so this is inherited rather
than dropped here -- but the old wording would have hidden a real drop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 27, 2026
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution in https://github.com/pingdotgg/t3code/pull/4084
* @eeinarsson made their first contribution in https://github.com/pingdotgg/t3code/pull/4137
* @keeperxy made their first contribution in https://github.com/pingdotgg/t3code/pull/3842
* @carlosricojr made their first contribution in https://github.com/pingdotgg/t3code/pull/3889
* @Bortlesboat made their first contribution in https://github.com/pingdotgg/t3code/pull/3921
* @PieterVanZyl-Dev made their first contribution in https://github.com/pingdotgg/t3code/pull/3931
* @McMelonTV made their first contribution in https://github.com/pingdotgg/t3code/pull/3933
* @tris203 made their first contribution in https://github.com/pingdotgg/t3code/pull/3720
* @theduke made their first contribution in https://github.com/pingdotgg/t3code/pull/3895
* @shoaib050326 made their first contribution in https://github.com/pingdotgg/t3code/pull/2456
* @vdmkotai made their first contribution in https://github.com/pingdotgg/t3code/pull/3617
* @Rhiz3K made their first contribution in https://github.com/pingdotgg/t3code/pull/3996
* @anirudhsama made their first contribution in https://github.com/pingdotgg/t3code/pull/3851
* @RusiruSadathana made their first contribution in https://github.com/pingdotgg/t3code/pull/4177
* @jbbottoms made their first contribution in https://github.com/pingdotgg/t3code/pull/4015
* @mfazekas made their first contribution in https://github.com/pingdotgg/t3code/pull/4117
* @caezium made their first contribution in https://github.com/pingdotgg/t3code/pull/4161
* @Wraient made their first contribution in https://github.com/pingdotgg/t3code/pull/3949
* @thomaslittle made their first contribution in https://github.com/pingdotgg/t3code/pull/4472
* @0x4bs3nt made their first contribution in https://github.com/pingdotgg/t3code/pull/4475
* @saphid made their first contribution in https://github.com/pingdotgg/t3code/pull/4607
* @maxktz made their first contribution in https://github.com/pingdotgg/t3code/pull/4657
* @KrzysztofMoch made their first contribution in https://github.com/pingdotgg/t3code/pull/4675
**Full Changelog**: https://github.com/pingdotgg/t3code/compare/v0.0.28...v0.0.29
## What's Changed
* Add middle-click close for right panel tabs by @huxcrux in https://github.com/pingdotgg/t3code/pull/3161
* fix: warm WSL before preflight in WSL-only backend mode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3588
* Add Claude Sonnet 5 as the default Claude model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3620
* Restore the ultrathink frame border effect by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3625
* fix(dev): Fix electron dev launch and add test by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3662
* Add adaptive split-view layout for iPad/mobile workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3514
* fix(mobile): compile patched native pods from source on EAS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3667
* Make the thread composer read as elevated liquid glass by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3668
* Upgrade Vite Plus and enable bundled dev opt-in by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3679
* Surface pending tasks in mobile home and draft flow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3670
* fix(mobile): combined test branch — scroll, back-swipe, thread lists, computer switching by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3687
* Add repo-root favicon.svg so t3 code shows its own icon by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3683
* Load thread snapshots over HTTP before live sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3719
* Fix mobile legend anchor under automatic iOS insets by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3684
* Improve live activity routing and diagnostics by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3685
* Prevent Add Project sheet from collapsing on relayout by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3759
* Use variant-specific splash icons in mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3762
* Fix Expo widget asset wiring order by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3763
* Extend Done display to 15 minutes and show up to 5 Live Activity banner rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3761
* Clear VCS presentation state on finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3764
* Lead with the outcome when no agents are active in the Live Activity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3768
* Add T3 Connect onboarding for mobile and web by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3765
* Revert "Add T3 Connect onboarding for mobile and web" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3776
* Expose Clerk Google sign-in env vars to Expo by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3772
* Set up Cursor Cloud dev environment (web + Android toolchain) by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3755
* Revert "Revert "Add T3 Connect onboarding for mobile and web"" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3777
* Use rounded depth logo for production splash screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3780
* fix(release): stage pnpm 11 allowBuilds for desktop installs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3781
* Upgrade Clerk toolchain to latest versions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3785
* fix(release): bump electron-builder so pnpm 11 deduped deps land in the asar by @avocardow in https://github.com/pingdotgg/t3code/pull/3790
* Fix desktop native optional dependency packaging by @Prgm-code in https://github.com/pingdotgg/t3code/pull/3816
* [codex] Upgrade Clerk stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3821
* [codex] Preserve worktree metadata during branch sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3822
* feat(client): persist offline environment data and mobile preferences by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3795
* [codex] Label max and ultra reasoning by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3824
* fix(mobile): embed fonts and render project favicons reliably by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3823
* Show compact PR number badges in mobile thread rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3827
* Expose mobile PR indicator labels to accessibility by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3828
* Fix truncated chat error alert layout by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3899
* fix(marketing): show platform-appropriate commit shortcut on the website by @VedankPurohit in https://github.com/pingdotgg/t3code/pull/3644
* [codex] Add Android mobile support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3579
* Use client-side fallbacks for missing project favicons by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3959
* Skip stale working-task notifications by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3961
* Prepare Android beta branding and review diff UI by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3967
* perf(web): duty-cycle status animations and remove fixed noise overlay by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3978
* fix(docs): correct CI task-runner commands in ci.md by @kridaydave in https://github.com/pingdotgg/t3code/pull/3990
* fix(docs): repair broken source links in architecture overview by @kridaydave in https://github.com/pingdotgg/t3code/pull/3991
* fix(docs): replace stale codething-mvp absolute paths with repo-relative links by @kridaydave in https://github.com/pingdotgg/t3code/pull/3992
* docs: Add T3 Code Legal Docs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3972
* Fix Legal modal header crash by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4000
* [codex] Fix onboarding connection status by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4001
* Isolate native diff highlight grammar state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4029
* Fix macOS fullscreen titlebar spacing by @D3OXY in https://github.com/pingdotgg/t3code/pull/4019
* Prevent duplicate project workspace roots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/3829
* Normalize over-indented markdown list items by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4020
* Resolve localhost preview URLs for remote environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4011
* fix(mobile): Send composer images in upload wire format by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4035
* Fix iOS terminal Enter input encoding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4043
* Add native mobile share target support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4021
* [codex] Expand real-route app store screenshot harness by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4014
* fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… by @dmstoykov in https://github.com/pingdotgg/t3code/pull/4017
* Fix dropped events during initial thread snapshot by @D3OXY in https://github.com/pingdotgg/t3code/pull/4079
* feat: show nightly update changelog tooltip by @HugoVizcainoSantana in https://github.com/pingdotgg/t3code/pull/3832
* fix(git): treat selected commit paths literally by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/3998
* fix(server): stabilize non-repository Git diagnostics by @EricTsai83 in https://github.com/pingdotgg/t3code/pull/4077
* Refresh app icons across release variants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4080
* Update marketing GitHub star count by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4088
* fix(marketing): correct Cursor icon color by @AmoonPod in https://github.com/pingdotgg/t3code/pull/4090
* Normalize protocol-relative remote host input as https by @kridaydave in https://github.com/pingdotgg/t3code/pull/3971
* fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) by @BunnyGamezsc in https://github.com/pingdotgg/t3code/pull/4094
* Fix documented task-runner commands (bun run -> vp) by @kridaydave in https://github.com/pingdotgg/t3code/pull/3965
* Allow preview panel to grow on wide displays by @olivoil in https://github.com/pingdotgg/t3code/pull/4044
* fix: prevent initial right-click from selecting a context menu item by @Fazalkadivar21 in https://github.com/pingdotgg/t3code/pull/3877
* Fix duplicate keybinding rule when replacing with an existing rule by @kridaydave in https://github.com/pingdotgg/t3code/pull/3969
* fix(server): image upload crashed dispatchCommand with a stack overflow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3952
* Remove unused code parameter from describePreviewError by @kridaydave in https://github.com/pingdotgg/t3code/pull/3970
* [codex] prevent ACP assistant ID collisions after restarts by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3932
* fix(web): inset Windows desktop scrollbars from resize edge by @nateEc in https://github.com/pingdotgg/t3code/pull/4097
* [codex] fix mobile composer Enter behavior by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/3930
* feat(server): include runtime model and effort in Codex developer instructions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3948
* fix(ux): spamming cmd + , no longer stack opening settings by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2757
* fix(terminal): strip AppImage runtime env from spawned terminals by @leorivastech in https://github.com/pingdotgg/t3code/pull/3108
* fix(server): thread cwd through Claude capability probe (#2048) by @mvanhorn in https://github.com/pingdotgg/t3code/pull/2124
* [codex] fix: guard invalid web timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3515
* [codex] fix: tolerate invalid latest user message timestamps by @StiensWout in https://github.com/pingdotgg/t3code/pull/3521
* [codex] Fix provider update checks restore defaults by @StiensWout in https://github.com/pingdotgg/t3code/pull/3531
* fix(server): skip undecodable provider runtime rows when listing sessions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3951
* Share MCP OAuth locks across Codex shadow homes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4104
* Preserve T3 Code identity in macOS development launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4102
* fix(web): increase contrast of question option descriptions by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3867
* feat: draft hero landing on the index route by @yordis in https://github.com/pingdotgg/t3code/pull/4055
* feat: file explorer mention actions and zoom-aware context menus by @yordis in https://github.com/pingdotgg/t3code/pull/4054
* fix(mobile): restore iOS home screen branding by @PixPMusic in https://github.com/pingdotgg/t3code/pull/4025
* perf(client): defer active thread cache writes by @Chrrxs in https://github.com/pingdotgg/t3code/pull/4006
* Default diffs to working changes by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3974
* Add Grok to marketing site provider list by @Aditya190803 in https://github.com/pingdotgg/t3code/pull/3484
* Fix reopening existing Diff tab by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3973
* Fix sending messages during active turns by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3919
* [codex] Route OpenCode missing-session errors through Effect by @StiensWout in https://github.com/pingdotgg/t3code/pull/3608
* [fix/feat:ui] Show default option badge by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3232
* [fix/feat:ui] Preserve open-in editor brand colors by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3225
* fix(web): handle macOS Home and End in composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2508
* Allow failed remote environments to be removed by @zepi2509 in https://github.com/pingdotgg/t3code/pull/4084
* [codex] canonicalize client timestamps by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4112
* [fix/feat:ui] Make selected menu checks blue by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/3234
* fix(desktop): Validate WSL node version against engine range after probe success by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/3621
* Refresh splash screen and favicon branding by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4120
* Add terminal selection copy action by @tarik02 in https://github.com/pingdotgg/t3code/pull/2904
* Add isolated app testing workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4121
* feat(web): themed sidebar header art for nightly and dev builds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4130
* feat: add headless `t3 connect` setup for SSH hosts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3749
* Refine T3 Connect authorization surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4159
* fix: increase OpenCode server startup timeout from 5s to 30s by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4132
* fix(shared): delete unused agentAwareness phase predicates by @kridaydave in https://github.com/pingdotgg/t3code/pull/4134
* fix(mobile): Stabilize native stack option updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4037
* Make test-t3-app skill discoverable by Claude Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4162
* fix(web): improve dev sidebar backdrop contrast & remove version pills by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4166
* Fix draft banner stack overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4164
* Add portable mobile app testing guidance by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4165
* fix(client): use lightweight connection probe by @eeinarsson in https://github.com/pingdotgg/t3code/pull/4137
* fix(server): resolve Claude SDK executable path on Windows npm installs by @nsxdavid in https://github.com/pingdotgg/t3code/pull/3740
* Fix project action preview settings persistence by @keeperxy in https://github.com/pingdotgg/t3code/pull/3842
* fix(desktop): allow clipboard writes in the preview browser by @carlosricojr in https://github.com/pingdotgg/t3code/pull/3889
* fix(web): handle sidebar shortcut before editors by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3921
* fix(server): recognize Bedrock-backed Claude as authenticated by @PieterVanZyl-Dev in https://github.com/pingdotgg/t3code/pull/3931
* Fix incorrect pluralization of “entry” by @McMelonTV in https://github.com/pingdotgg/t3code/pull/3933
* feat(server): title background-task work-log rows with the task name by @t3dotgg in https://github.com/pingdotgg/t3code/pull/3751
* fix: delegate OpenCode session titles to provider by @tris203 in https://github.com/pingdotgg/t3code/pull/3720
* Archive selected threads from the context menu by @theduke in https://github.com/pingdotgg/t3code/pull/3895
* fix(cli): support force removing projects by @Bortlesboat in https://github.com/pingdotgg/t3code/pull/3922
* fix: allow sidebar to be shrunk when wider than viewport by @shoaib050326 in https://github.com/pingdotgg/t3code/pull/2456
* fix(codex): show web search query and url in tool call details by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/2093
* Add Codex launch arguments setting by @jamesx0416 in https://github.com/pingdotgg/t3code/pull/2892
* [orchestration] Clear stale active turn when session becomes inactive by @Andrew-Forster in https://github.com/pingdotgg/t3code/pull/3159
* Regenerate Codex reset credit protocol bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4173
* fix(preview): preserve direct localhost navigation by @Chrrxs in https://github.com/pingdotgg/t3code/pull/3939
* Synchronize mobile threads with authoritative shell snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4163
* Gate iOS glass layout on native support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4032
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one by @vdmkotai in https://github.com/pingdotgg/t3code/pull/3617
* fix(server): use CLI for OpenCode health check instead of spawning server by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4153
* fix(web): scope timeline minimap hover target to the side gutter by @xxashxx-svg in https://github.com/pingdotgg/t3code/pull/3869
* [codex] show complete approval details by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4111
* fix(web): paint text selection over composer chips by @yordis in https://github.com/pingdotgg/t3code/pull/4139
* [codex] preserve custom model slugs by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4168
* fix(web): preview workspace images in the file panel by @Rhiz3K in https://github.com/pingdotgg/t3code/pull/3996
* feat(web): drag files from the explorer into the chat composer by @yordis in https://github.com/pingdotgg/t3code/pull/4140
* fix(desktop): preserve main window bounds by @anirudhsama in https://github.com/pingdotgg/t3code/pull/3851
* perf(orchestration): speed up new-chat propagation and offline catch-up by @RusiruSadathana in https://github.com/pingdotgg/t3code/pull/4177
* Finale: upgrade changed files card to fix various UI issues by @sandersonstabo in https://github.com/pingdotgg/t3code/pull/4113
* Pass CLI OAuth config to hosted web deploy by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4186
* fix(web): always show environment chip for remote projects by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4217
* fix(web): keep composer editable while disconnected by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4241
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4240
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4244
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4026
* fix(settings): validate the add-provider wizard step before advancing (#2813) by @leorivastech in https://github.com/pingdotgg/t3code/pull/3100
* fix(claude): isolate capability probe from user MCP servers by @jbbottoms in https://github.com/pingdotgg/t3code/pull/4015
* Preserve connecting status while a turn starts by @D3OXY in https://github.com/pingdotgg/t3code/pull/4101
* fix(server): stop restoring stale OpenCode models by @nateEc in https://github.com/pingdotgg/t3code/pull/4095
* [codex] keep scoped package references as text by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/4167
* fix(web): default provider selection for users without Codex by @mfazekas in https://github.com/pingdotgg/t3code/pull/4117
* Unify temporary worktree branch naming by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4278
* fix(web): use message-square icon for settled icon-less project threads in sidebar v2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4279
* Stabilize sidebar settling animations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4280
* Restore Copy Link in chat link context menu by @caezium in https://github.com/pingdotgg/t3code/pull/4161
* fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4213
* Preserve draft thread highlighting during promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4283
* Move mobile working timer into the thread timeline by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4285
* Stabilize PR status lookups and provider session lifecycle by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4281
* fix: open command palette instead of custom dialog for new thread picker in SidebarV2 by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/4269
* fix(server): don't drop sticky PR fallback when remote URL can't be resolved by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4289
* feat(web): copy branch name via right-click in the branch selector by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4275
* Add remote server updates and standalone service management by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4286
* Refine light-mode sidebar surfaces by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4268
* fix(mobile): don't mark Android VPN/Tailscale as offline when connected by @Wraient in https://github.com/pingdotgg/t3code/pull/3949
* improve and prevent silent thread branch drift and PR fetching by @justsomelegs in https://github.com/pingdotgg/t3code/pull/2284
* Refresh web application surfaces and dark-mode dialogs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4319
* fix(web): new-thread defaults ignored for remote environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4276
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4272
* Add shared t3.json project configuration support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4317
* Unify dialog glass and fix composer overlays by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4365
* fix(web): warn before silent Windows updates by @nateEc in https://github.com/pingdotgg/t3code/pull/4350
* [codex] Move project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4313
* [codex] Group project scopes in mobile thread lists by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4314
* [codex] Move mobile project grouping to General settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4315
* [codex] Deduplicate connection failure messaging by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4367
* Restore grouped project filtering in Sidebar V2 by @shivamhwp in https://github.com/pingdotgg/t3code/pull/4282
* [codex] restore Sidebar V2 project actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4373
* [codex] Group projects in new-thread pickers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4312
* fix(web): restore dark composer toolbar styling by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4375
* Fix thread tooltip folder icon color by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4383
* fix(server): parse CLI version in update preflight by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4389
* fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4274
* Fix logical project grouping labels on mobile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4391
* Add preview color scheme controls and simplify project grouping by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4385
* fix(cli): publish nightly branded favicons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4372
* Fix thread loading flash by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4396
* fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4309
* Fix composer context strip alignment and glass shell by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4404
* Polish iOS git progress overlay with glass effects by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4387
* Improve composer glass fallbacks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4406
* feat(web): collapse large git diffs by default to make chat more readable by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4409
* Stop new threads inheriting checkout/branch from viewed thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4411
* fix: tone down branch-mismatch banner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4416
* fix: Claude Code skills discoverable for the composer $ picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4414
* fix(web): keep settled threads reachable when opened directly by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4413
* feat(sidebar-v2): thread snoozing by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4311
* Upgrade Clerk packages and Expo integration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4440
* Increase light-mode contrast for user message bubbles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4441
* Restore model picker layout and retain iterative test state by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4450
* Color settled PR labels on hover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4451
* [codex] Fix glass hover compositing artifacts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4446
* Add Claude Opus 5 model by @thomaslittle in https://github.com/pingdotgg/t3code/pull/4472
* feat(web): add collapse-all toggle to diff panel by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4475
* feat(web): show fast mode as a bolt instead of a "Normal" label by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4488
* feat(dev): keep worktree dev state isolated on T3 Code dev servers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4555
* feat(dev): Make t3 code dev instances shareable over Tailscale by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4556
* fix(dev): skip browser-blocked ports by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4608
* fix: cut websocket throughput in half by pruning activity payloads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4622
* perf(mobile): defer work-log detail serialization by @saphid in https://github.com/pingdotgg/t3code/pull/4607
* test: account for lazy thread feed details by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4628
* feat(relay): limit managed tunnels per user by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4530
* Add managed tunnel limits migration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4635
* Add background preview capture and picture-in-picture support by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4397
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue by @t3dotgg in https://github.com/pingdotgg/t3code/pull/4453
* [codex] Upgrade Effect and Alchemy betas by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4643
* feat: allow new thread creation through project breadcrumbs by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4638
* fix(web): scope PR state to the thread branch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4460
* Drop redundant Relay user indexes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4648
* feat(connect): release the Cloudflare tunnel when the environment shuts down by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4531
* Fix Relay Worker RuntimeContext wiring by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4653
* Fix live sidebar resize limits and defer Alchemy runtime context by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4655
* fix(web): constrain branch toolbar context by @maxktz in https://github.com/pingdotgg/t3code/pull/4657
* Keep MCP credentials alive across provider turns by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4659
* fix: close actions dropdown when editing by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4660
* fix(preview): stabilize PiP viewport identity by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4661
* Add glass styling for thread tooltips and simplify preview tab handling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4665
* Use tarball archiving for hosted web deploys by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4669
* fix(server): bound editor discovery during config loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4291
* Prevent draft thread detail polling before shell registration by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4670
* feat: add configurable source control writing settings by @maria-rcks in https://github.com/pingdotgg/t3code/pull/4204
* feat(diff-panel): show total line additions and deletions by @0x4bs3nt in https://github.com/pingdotgg/t3code/pull/4674
* Clear provider update actions while updating by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4676
* Fix sidebar highlighting for draft threads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4679
* Use glass surfaces for web toasts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4681
* Show origin ref in branch trigger label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4680
* fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) by @KrzysztofMoch in https://github.com/pingdotgg/t3code/pull/4675
## New Contributors
* @avocardow made their first contribution in https://github.com/pingdotgg/t3code/pull/3790
* @Prgm-code made their first contribution in https://github.com/pingdotgg/t3code/pull/3816
* @jakeleventhal made their first contribution in https://github.com/pingdotgg/t3code/pull/3899
* @VedankPurohit made their first contribution in https://github.com/pingdotgg/t3code/pull/3644
* @kridaydave made their first contribution in https://github.com/pingdotgg/t3code/pull/3990
* @dmstoykov made their first contribution in https://github.com/pingdotgg/t3code/pull/4017
* @HugoVizcainoSantana made their first contribution in https://github.com/pingdotgg/t3code/pull/3832
* @EricTsai83 made their first contribution in https://github.com/pingdotgg/t3code/pull/3998
* @AmoonPod made their first contribution in https://github.com/pingdotgg/t3code/pull/4088
* @BunnyGamezsc made their first contribution in https://github.com/pingdotgg/t3code/pull/4094
* @olivoil made their first contribution in https://github.com/pingdotgg/t3code/pull/4044
* @Fazalkadivar21 made their first contribution in https://github.com/pingdotgg/t3code/pull/3877
* @maxwellyoung made their first contribution in https://github.com/pingdotgg/t3code/pull/3932
* @nateEc made their first contribution in https://github.com/pingdotgg/t3code/pull/4097
* @leorivastech made their first contribution in https://github.com/pingdotgg/t3code/pull/3108
* @xxashxx-svg made their first contribution in https://github.com/pingdotgg/t3code/pull/3867
* @yordis made their first contribution in https://github.com/pingdotgg/t3code/pull/4055
* @Chrrxs made their first contribution in https://github.com/pingdotgg/t3code/pull/4006
* @Aditya190803 made their first contribution in https://github.com/pingdotgg/t3code/pull/3484
* @zepi2509 made their first contribution …
andreasmolnardev pushed a commit to andreasmolnardev/codewise that referenced this pull request Jul 28, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 <noreply@anthropic.com>
* 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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: mel <mcmelon@nodiumhosting.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
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 <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(codex): show web search query and url in tool call details (pingdotgg#2093)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Add Codex launch arguments setting (pingdotgg#2892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
* [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Regenerate Codex reset credit protocol bindings (pingdotgg#4173)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(preview): preserve direct localhost navigation (pingdotgg#3939)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163)
Co-authored-by: codex <codex@users.noreply.github.com>
* Gate iOS glass layout on native support (pingdotgg#4032)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* [codex] show complete approval details (pingdotgg#4111)
* fix(web): paint text selection over composer chips (pingdotgg#4139)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* [codex] preserve custom model slugs (pingdotgg#4168)
* fix(web): preview workspace images in the file panel (pingdotgg#3996)
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(web): drag files from the explorer into the chat composer (pingdotgg#4140)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
* fix(desktop): preserve main window bounds (pingdotgg#3851)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Pass CLI OAuth config to hosted web deploy (pingdotgg#4186)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(web): always show environment chip for remote projects (pingdotgg#4217)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep composer editable while disconnected (pingdotgg#4241)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
* fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015)
Co-authored-by: codex <codex@users.noreply.github.com>
* Preserve connecting status while a turn starts (pingdotgg#4101)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(server): stop restoring stale OpenCode models (pingdotgg#4095)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] keep scoped package references as text (pingdotgg#4167)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* fix(web): default provider selection for users without Codex (pingdotgg#4117)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add remote server updates and standalone service management (pingdotgg#4286)
Co-authored-by: codex <codex@users.noreply.github.com>
* Refine light-mode sidebar surfaces (pingdotgg#4268)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): refresh application surfaces
* style(web): polish dark mode dialogs
* fix(web): unify and tune glass surfaces
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* fix(web): warn before silent Windows updates (pingdotgg#4350)
* [codex] Move project grouping to General settings (pingdotgg#4313)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group project scopes in mobile thread lists (pingdotgg#4314)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Move mobile project grouping to General settings (pingdotgg#4315)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Deduplicate connection failure messaging (pingdotgg#4367)
Co-authored-by: codex <codex@users.noreply.github.com>
* Restore grouped project filtering in Sidebar V2 (pingdotgg#4282)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] restore Sidebar V2 project actions (pingdotgg#4373)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Group projects in new-thread pickers (pingdotgg#4312)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix logical project grouping labels on mobile (pingdotgg#4391)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add preview color scheme controls and simplify project grouping (pingdotgg#4385)
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* fix: tone down branch-mismatch banner (pingdotgg#4416)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): keep settled threads reachable when opened directly (pingdotgg#4413)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(sidebar-v2): thread snoozing (pingdotgg#4311)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
* 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 <codex@users.noreply.github.com>
* Color settled PR labels on hover (pingdotgg#4451)
Co-authored-by: codex <codex@users.noreply.github.com>
* [codex] Fix glass hover compositing artifacts (pingdotgg#4446)
Co-authored-by: codex <codex@users.noreply.github.com>
* Add Claude Opus 5 model (pingdotgg#4472)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <yordis.prieto@gmail.com>
Co-authored-by: Tristan Knight <tris203@gmail.com>
Co-authored-by: Christoph Herzog <a.github@omega-id.com>
Co-authored-by: Andrew Barnes <bortstheboat@gmail.com>
Co-authored-by: Shoaib <shoaib050326@gmail.com>
Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com>
Co-authored-by: Vadym Kotai <vdmkotai@gmail.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Maxwell Young <maxtheyoung@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
Co-authored-by: Rhiz3K <rhiz3k@protonmail.com>
Co-authored-by: Anirudh Coontoor <me@anirudhs.net>
Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com>
Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Leonel Rivas <encriptandost@gmail.com>
Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com>
Co-authored-by: Ishan <ishansachu1@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com>
Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: tomlit <tomlit@gmail.com>
Co-authored-by: jan <hi@4bs3nt.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 2, 2026
Brings in 81 upstream commits (up to v0.0.31, "fix(web): align remote
server update action" pingdotgg#4731). One file conflicted: apps/web/vite.config.ts.
Upstream independently shipped single-origin browser dev (pingdotgg#4555/pingdotgg#4556/pingdotgg#4608
— Tailscale sharing, isolated worktree dev state, browser-blocked port
avoidance), which covers the same ground as this fork's proxy-origin work in
pingdotgg#3. The conflict is resolved by taking upstream's implementation wholesale and
re-applying only what is genuinely fork-specific on top:
- T3CODE_DEV_PROXY_TARGET / T3CODE_PROXY_TARGET_OVERRIDE / T3CODE_PROXY_TARGET
/ MOATLESS_BASE_URL still select the proxy target, and now take precedence
over upstream's T3CODE_PORT-derived default, which the dev runner always
sets. Naming a target also implies single-origin mode, so VITE_HTTP_URL and
VITE_WS_URL stay blank and the browser resolves the backend from its own
origin.
- VITE_MOATLESS_PROXY_AUTH is still defined for environments/primary/auth.ts.
- T3CODE_ALLOWED_HOSTS is kept as an alias of upstream's new
T3CODE_DEV_ALLOWED_HOSTS (deployments inject the former), along with the
`true` escape hatch. Upstream's implicit .ts.net entry is preserved.
- The NODE_ENV=production pin for `vite serve` is kept; hosted sandboxes still
export it process-wide.
Dropped as superseded:
- T3CODE_HMR_HOST and its dev-runner plumbing. Upstream now deletes an
inherited HOST for every non-desktop mode and gates the HMR pin on
`explicitHost`, which is the same fix with upstream's own tests
(scripts/dev-runner.test.ts "drops an inherited HOST in <mode> mode").
scripts/dev-runner.ts and its test now match upstream exactly.
- The separate /attachments proxy entry. Prefixes now come from
packages/shared/src/devProxy.ts, and attachments moved under
/api/assets (ASSET_ROUTE_PREFIX), which /api already covers.
Verified: pnpm typecheck clean across all 15 projects; pnpm test green
(apps/web 1673, scripts 197, full monorepo suite otherwise passing — one
load-induced 15s timeout in the upstream-owned
src/lib/stashImageCompression.test.ts, which passes in isolation);
pnpm lint exit 0; pnpm fmt:check clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
awtprod added a commit to awtprod/t3-code that referenced this pull request Aug 15, 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) <noreply@anthropic.com>
* feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add managed tunnel limits migration (pingdotgg#4635)
* Add background preview capture and picture-in-picture support (pingdotgg#4397)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* Drop redundant Relay user indexes (pingdotgg#4648)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Fix Relay Worker RuntimeContext wiring (pingdotgg#4653)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* feat: add configurable source control writing settings (pingdotgg#4204)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730)
Co-authored-by: Claude <noreply@anthropic.com>
* perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Fix Git ref refresh resource storms (pingdotgg#4727)
Co-authored-by: codex <codex@users.noreply.github.com>
* perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): defer command palette filesystem navigation (pingdotgg#2109)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(release): skip scripts during Vercel installs (pingdotgg#4796)
* refactor(client): share filesystem browse navigation (pingdotgg#4797)
Co-authored-by: codex <codex@users.noreply.github.com>
* fix(mobile): defer filesystem navigation (pingdotgg#4799)
Co-authored-by: codex <codex@users.noreply.github.com>
* refactor(server): use native HTTP compression streams (pingdotgg#4798)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <simon.doba@orbit.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): server updates no longer look like warnings (pingdotgg#4992)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* Check for mobile app updates on launch (pingdotgg#4958)
Co-authored-by: codex <codex@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): render terminals with libghostty-vt (pingdotgg#4860)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* feat(web): search threads from the sidebar (pingdotgg#4769)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): add settings sidebar search (pingdotgg#4682)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(server): follow branch drift in dedicated worktrees so PRs link to their thread (pingdotgg#5159)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* fix(server): stop npx service updates from silently leaving the old server running (pingdotgg#5217)
Co-authored-by: Claude <noreply@anthropic.com>
* 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 <julius0216@outlook.com>
* 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) <noreply@anthropic.com>
* 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 <rodrigo@clubtidy.fr>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
* feat(sidebar-v2): thread pinning for sidebar v2 (pingdotgg#5312)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): make pairing QR codes actually scannable, with endpoint choice (pingdotgg#5360)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <t3code-test@example.com>
* 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 <t3code-test@example.com>
* 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 <noreply@anthropic.com>
* feat: native subagent & workflow observability (pingdotgg#5219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(server): stop shipping full MCP tool results in thread payloads (pingdotgg#5482)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(web): closed plan sidebar stays closed when returning to a thread (pingdotgg#5484)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* test(server): use the launcher state writer in release tests
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): update tooltip no longer dismisses when scrolling release notes (pingdotgg#5547)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(server): stop showing commit/push/PR notices as errors in the work log (pingdotgg#5559)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix: prevent reconnect loops during server stalls (pingdotgg#5561)
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
* 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 <noreply@anthropic.com>
* fix(server): one disconnecting client no longer blocks every reconnect (pingdotgg#5572)
Co-authored-by: Claude <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): plans stop hijacking the UI, fold into chat instead (pingdotgg#5558)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): remove Build/Plan toggle from the composer (pingdotgg#5551)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(web): per-device provider settings (pingdotgg#4479)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* feat(web): add modular theme library (pingdotgg#5226)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
* fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(dev): faster cold-start for dev web serving (pingdotgg#5584)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(dev): Improve instructions for --share (pingdotgg#5586)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* fix(web): stabilize chat timeline positioning (pingdotgg#5449)
Co-authored-by: codex <codex@users.noreply.github.com>
* feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat(web): thread actions from the chat header title (pingdotgg#5592)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* 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 <codex@users.noreply.github.com>
* 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 <hi@4bs3nt.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Max Katz <me@maxkatz.me>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: wukko <me@wukko.me>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Simon Doba <simon.doba@hotmail.de>
Co-authored-by: Simon Doba <simon.doba@orbit.de>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com>
Co-authored-by: Elaine Lyons <elaine@lyons.app>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Max Anderson <max.a.anderson95@gmail.com>
Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Mike Olson <mwolson@member.fsf.org>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: naMqe <naMqe07@gmail.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Fllip <39161142+FllipEis@users.noreply.github.com>
Co-authored-by: Hwanseo Choi <electricvoxel@gmail.com>
Co-authored-by: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Co-authored-by: Carlos Rico-Ospina <carlosricojr@gmail.com>
Co-authored-by: Gabe Fletcher <gabe@editmypodcast.agency>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local>
Co-authored-by: Mateleo <mateleo78@gmail.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Jay Meistrich <github@jayz.us>
Co-authored-by: Justyn Leung <justynleung2000@gmail.com>
Co-authored-by: Tyler Saari <73684839+StoneCotton@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: atryan <atryan@users.noreply.github.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
…ingdotgg#4555)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg