Skip to content

fix(server): squash-merged branches no longer offer push & create PR - #28494

Merged
juliusmarminge merged 6 commits into
mainfrom
fix/issue-28467
Nov 3, 2026
Merged

juliusmarminge merged 6 commits into
mainfrom
fix/issue-28467

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Problem

After a branch's PR is squash- or rebase-merged, the Git action button still offers to ship it. With the head branch deleted and a clean worktree identical to origin/main, it shows Push & create PR, and clicking it fails with head invalid. With the head branch kept, it shows Create PR. Squash and rebase merges land new commits, so origin/main..HEAD still counts the branch's original commit, and the remote status reports aheadCount/aheadOfDefaultCount of 1.

Reproduced on main 8b74a69019 in the web app (fresh database) with a local squash-merged fixture: head branch deleted showed an enabled "Push & create PR", head branch kept showed "Create PR".

Change

Remote status already looks up the branch's latest PR in any state, and the forge returns its head SHA, but status dropped it. readRemoteStatus now keeps that head SHA next to the status PR. When the PR is merged into the default branch (resolved from the primary remote when origin/HEAD is missing) and its head SHA equals HEAD, status reports aheadOfDefaultCount as 0, and aheadCount as 0 when the branch has no upstream (where that count is only the fallback delta against the base). A real upstream delta is left alone, so a branch that tracks its base still shows its divergence. HEAD is read only for merged PRs, so open-PR and no-PR status reads cost nothing extra. The last-known-PR fallback keeps the head SHA too, so a failed lookup does not bring the action back.

Web, desktop and mobile already disable push and create PR when these counts are 0, so this is server-only with no contract change. A commit added after the merge, a dirty worktree, a PR merged into another base, or a PR without a head SHA keep today's behaviour.

Scope and approval

Fixes #28467

Verification

vp test run apps/server/src/git/GitManager.test.ts: 113 passed. New tests, all against a real bare remote with a real squash commit:

Test main 8b74a69019 this branch
status reports nothing to ship after a squash merge deleted the remote branch fails: aheadCount 1, aheadOfDefaultCount 1 passes
status reports nothing to ship after a squash merge kept the remote branch fails: aheadOfDefaultCount 1 passes
status keeps a squash-merged branch shipped when a later PR lookup fails fails: aheadOfDefaultCount 1 passes
status still reports work to ship for a commit added after a squash merge passes passes
status still reports work against main after a merge into another base passes passes
status keeps real divergence for a squash-merged branch that tracks its base passes passes
status reports nothing to ship after a squash merge into a non-origin default fails: aheadOfDefaultCount 1 passes

vp run check:changed: format, lint, knip, typecheck (3 packages) and tests (2 files, 114) pass.

Not checked: before/after captures of the Git action control with a merged PR are not attached. The status counts that drive it are covered by the tests above, and the client logic that maps zero counts to a disabled action is unchanged. The historical "Changes +N −M" total is unchanged by this PR.

Model and harness: Claude Opus 5.5 (Claude Code) with GPT-6.1 Sol (Codex) reviews, via T3 Code.

🤖 Generated with Claude Code

Takeover

No code changes; evidence and verification added below. The captures that the Verification section above lists as not attached are now in Evidence.
One correction to the Change section: with a dirty worktree the primary action is unchanged (Commit, push & PR), but Create PR becomes disabled at an already-merged HEAD in the web menu and the mobile overview. Web's Push entry also becomes disabled when the remote branch is gone (A3). In A4, and on mobile, Push was already disabled for a dirty tree.

Evidence

Before 71646e0 (merge-base), after 0d27d85 (head). Each side ran from its own checkout with a fresh isolated database (T3CODE_DEV_SEED=0), against the same fixture clones. The fixtures are real squash-merged GitHub PRs in a synthetic private fixture repository, read through the GitHub provider's GraphQL path. Baseline Push and Create PR actions were never run. Each row has its own sheet (linked from the State column) with the full step list, playback timestamps, RPC payloads and every still.

Environment: web Chromium 148 headless, DPR 1, font 100%, no device emulation, reduced motion, JS clock frozen. 1440×1000 dark and 390×844 light. Desktop: Electron 44.10 on Xvfb, 1440×1000 dark, DPR 1. Native: one dev client paired to both servers. iPhone 17 Pro (iOS 27.2, 402×874 pt, DPR 3) and iPad Pro 13 M5 (1032×1376 pt, DPR 2) dark; Pixel 9 (API 36, 411×923 dp, DPR 2.625) light; font scale 1. Native OS clocks could not be frozen, so each before/after pair was captured in the same minute. Every still passed two byte-identical screenshots taken 500 ms apart. Diff0 amplifies any channel delta ×255; DiffT marks deltas >16/255.

State Before After Diff0 DiffT >16 Recordings What changed
A1 deleted branch, clean · web 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after Push & create PR → disabled Push; menu Push, Create PR disabled
A2 kept branch, clean · web 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after Create PR → disabled Commit; menu Create PR disabled
A1 · web 390 light (details popover) before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after as A1; nothing outside the Git control at zero threshold
A3 deleted, dirty · web 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after primary stays Commit, push & PR; menu Push, Create PR disabled
A4 kept, dirty · web 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after primary unchanged; Create PR disabled
A5 tracks main, diverged · web 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after Sync ref stays; Create PR hint: behind upstream → no local commits
A7 behind feature upstream · web 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after Pull stays; Create PR hint: behind upstream → no local commits
A6 real upstream ahead delta · web 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after Push & create PR and Push stay enabled; Create PR disabled
A9 lookup fails after merged lookup · web 1440 dark, harness¹ before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after before stays Push & create PR; after stays disabled Push
A8 zero-turn, zero totals · web 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after Git action and Changes rows hide (existing quiet-draft gate)
A1 · iPhone 17 Pro dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after “1 ahead” → Clean; Push & create PR → disabled Push; overview Push, Create PR disabled
A2 · iPhone 17 Pro dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after overview Create PR disabled with reason; rows shift down
A3 · iPhone 17 Pro dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after subtitle loses “1 ahead”; Create PR disabled
A4 · iPhone 17 Pro dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after Create PR disabled
A5 · iPhone 17 Pro dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after divergence kept; Create PR reason changes
A1 · Pixel 9 light before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after overview loses “1 ahead”; Push, Create PR disabled
A2 · Pixel 9 light before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after Create PR disabled
A3 · Pixel 9 light before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after subtitle loses “1 ahead”; Create PR disabled
A2 · iPad Pro 13 inspector dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after inspector Create PR disabled
A1 · Electron 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after as web A1; nothing else at zero threshold
A2 · Electron 1440 dark before
71646e0
after
0d27d85
diff0
71646e0→0d27d85
diffT
71646e0→0d27d85
before · after as web A2; nothing else at zero threshold

¹ A9 is labelled Integration harness: real git, controlled forge response. A real merged lookup runs first, then a fixture-scoped GraphQL failure and a normal refresh in the same server process.

What else changed:

  • Web and Electron: nothing outside the Git control and its hints at zero threshold.
  • Native stills: faint sheet-material antialiasing outside the changed rows, removed at threshold 16 and listed per row in the sheets.
  • Layout: the added disabled-reason descriptions move later overview rows down.
  • iOS A5: popover placement differs; noted in its sheet.
  • Existing gates, intentionally unchanged: Changes +N/−M totals, divergence (Sync ref, Pull) and a real upstream ahead delta (A6) stay as they were. A8's row hiding is the existing quiet-draft gate.

Guards (RPC/git/forge transcripts, no new display class):

  • G1, post-merge follow-up commit: keeps A1/D2. transcript
  • G2, merge into release: keeps D1. Same transcript.
  • G3, default resolved without origin/HEAD and via upstream/HEAD → develop: gives D1→0. transcript, develop default

Scripts (uploaded, not committed):

Verification log
  • Code: this round changed no code. Head stays 0d27d85; tests and reviews are as recorded in the Verification section above (113 tests in GitManager.test.ts, 7 new).
  • CI on 0d27d85: Build and Typecheck, Changes, Check and the rest are green. Deploy and EAS previews were skipped.
  • Proof audit: pass 1 derived the 15-row fixture matrix. Pass 2 took three rounds:
    • Round 1 rejected the native rows (live status-bar clock, clipped rows), stale Electron hint overlays and Diff0 noise on web 390 and A9.
    • Round 2 rejected iOS A2 (unchanged glyphs surviving the threshold), two truncated recording uploads, two caption timestamps and an extra iOS A5 comparison.
    • The final round accepted every row and asked for two body wording fixes, applied above.
    • An independent rebuild of web A2 at the head matched the delivered capture exactly (0 / 1,440,000 px).
  • Unverified: the iOS reduced-motion setting could not be overridden on the pool simulators; stable pixel-identical pairs were used as the settle gate. Native OS clocks could not be frozen; the pairs were captured in the same minute instead. Optional matrix guard G4 (PR without head SHA, resolver failure) was not exercised visually; it is covered by the server tests.
  • Fixture: synthetic private GitHub repository, not deleted because the token lacks delete_repo scope.
  • Model and harness: Claude Opus 5.5 (Claude Code) lead; GPT-6.1 Sol (Codex) capture and proof-audit steps; via T3 Code.

juliusmarminge and others added 5 commits November 1, 2026 01:35
…k to ship

These tests reproduce #28467: after a squash merge, GitManager.status
still reports the branch ahead of upstream and of the default branch even
though the merged PR's head SHA is the current HEAD, so clients offer
push / create PR for work that already shipped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixes #28467

After a squash or rebase merge the branch's commits are never reachable
from the default branch, so remote status kept counting them as ahead and
clients offered push / create PR for work that already shipped.

Remote status now keeps the looked-up PR's head SHA alongside the status
PR. When that PR is merged and its head SHA is the current HEAD, ahead and
ahead-of-default counts report 0. HEAD is read only in that case, so
ordinary status reads cost nothing extra. A commit added after the merge,
a PR without a head SHA, or a last-known-PR fallback keeps the old counts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ives lookup failures

Only treat a merged PR as shipping HEAD when it targeted the default branch,
so a merge into another base keeps the remaining delta against main. Keep the
merged PR's head SHA with the last known PR so a failed lookup does not bring
back push and create PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aults for merged-PR status

Zero aheadCount only when the branch has no upstream, so a branch that tracks
its base keeps its real divergence instead of offering a failing Pull. When
origin/HEAD is missing, resolve the primary remote's default branch before
matching the merged PR's base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Nov 1, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 1c3d7b3

Macroscope's review found this PR approvable — Corrects status so already-merged branches no longer offer redundant push or PR actions. Exact commit matching limits the change, and real upstream divergence remains visible; no repository data is modified.

No code changes detected at 0d27d85. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB −29 B (−0.6%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB −29 B (−2.3%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 21.6 KiB 21.5 KiB −41 B (−0.2%) 24.4 KiB ✅
Codex Live turn messages 2 1 −1 (−50.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.3 KiB 1.3 KiB 0 B (0.0%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.9 KiB 21.9 KiB 0 B (0.0%) 24.4 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 71646e0 · PR result: 0d27d85 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@juliusmarminge juliusmarminge added bugfix Fix PR opened by an issue lead; enters the PR loop pr:gate-failed A land gate failed labels Nov 1, 2026
@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Walkthrough

GitManager now retains pull request head SHAs through status lookup and fallback. When a merged PR’s head matches HEAD and its base matches the resolved default branch, remote status adjusts ahead counts. Tests cover squash-merge scenarios and related status cases.

Changes: Merged PR status

Layer / File(s) Summary
Retain PR head SHA
apps/server/src/git/GitManager.ts
Status lookup and last-known PR fallback results now carry the associated head SHA.
Calculate merged PR status
apps/server/src/git/GitManager.ts, apps/server/src/git/GitManager.test.ts
Remote status zeroes eligible ahead counts when a merged PR’s head SHA matches HEAD. Tests cover retained or deleted branches, later commits, base branches, lookup failure, and a non-origin default branch.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested labels: bugfix

Suggested reviewers: t3dotgg, maria-rcks

Merge Risk: Minimal · up to 1c3d7

The merged-PR status change is ready to merge based on the reviewed behavior; dirty worktrees retain the combined action.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main server-side fix: squash-merged branches no longer offer push or create-PR actions.
Linked Issues check Passed [#28467] The reported symptom is an enabled "Push & create PR" after a squash or rebase merge. The diff in apps/server/src/git/GitManager.ts keeps the PR head SHA through lookupStatusPr and the last-k…
Out of Scope Changes check Passed The whole-PR diff against merge base 2a4d128 touches apps/server/src/git/GitManager.ts and GitManager.test.ts. The GitManager.ts changes all serve the squash-merge status fix. They add headSha to Las…
Description check Passed The pull request description includes all required sections: Problem, Change, Scope and approval, and Verification. It explains the reproduction, implementation, scope, linked issue, test results, edg…
Full details: Linked Issues check

Explanation

[#28467] The reported symptom is an enabled "Push & create PR" after a squash or rebase merge. The diff in apps/server/src/git/GitManager.ts keeps the PR head SHA through lookupStatusPr and the last-known-PR fallback. readRemoteStatus sets aheadOfDefaultCount to 0 when the PR is merged into the default branch and its headSha equals HEAD. It sets aheadCount to 0 only when the branch has no upstream. Client logic in GitActionsControl.logic.ts then yields no create action. With counts at 0 and no upstream, resolveQuickAction returns a disabled "Push" hint, and buildMenuItems disables "Create PR". The issue's suggested fix (pass the head SHA through status, treat a matching merged PR as shipped) is implemented on the server. Commits added after the merge keep HEAD different from headSha, so counts stay non-zero. Dirty worktrees still reach the hasChanges branch of resolveQuickAction, which offers commit-based actions. Test coverage is taken from the PR description and was not re-run. Not addressed, and excluded by the PR objectives: the local porcelain reader and remote reader handling of a gone upstream (issue section 'Separately'), a guard in runStackedAction, and the historical change total.

Full details: Out of Scope Changes check

Explanation

The whole-PR diff against merge base 2a4d128 touches apps/server/src/git/GitManager.ts and GitManager.test.ts. The GitManager.ts changes all serve the squash-merge status fix. They add headSha to LastKnownPr and lookupStatusPr, change resolveLastKnownPr to return the full record, and compute shippedByMergedPr for the count adjustment. toStatusPr is unchanged, so the client contract does not change. No unrelated behavior change appears in the reviewed hunks. One description inaccuracy: the PR text says a dirty worktree keeps today's behavior. The server counts do change for a dirty worktree at a merged HEAD, and the menu item 'Create PR' becomes disabled until the user commits. The quick action still offers commit-based actions. This is a consequence within scope, not an unrelated change.

Full details: Description check

Explanation

The pull request description includes all required sections: Problem, Change, Scope and approval, and Verification. It explains the reproduction, implementation, scope, linked issue, test results, edge cases, evidence, and remaining limitations.

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 5ff1482 and 1c3d7b3.

Files selected for processing: 2
  • apps/server/src/git/GitManager.test.ts
  • apps/server/src/git/GitManager.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.

@juliusmarminge juliusmarminge added pr:in-progress A lead is working on this PR pr:gate-failed A land gate failed and removed pr:gate-failed A land gate failed pr:in-progress A lead is working on this PR labels Nov 2, 2026
@juliusmarminge juliusmarminge self-assigned this Nov 2, 2026

Copy link
Copy Markdown
Member Author

Taking over this one

@juliusmarminge juliusmarminge added pr:ready Every gate passed; waits for Julius's land label and removed pr:in-progress A lead is working on this PR labels Nov 3, 2026
@juliusmarminge
juliusmarminge merged commit 3040f91 into main Nov 3, 2026
46 of 47 checks passed
@juliusmarminge
juliusmarminge deleted the fix/issue-28467 branch November 3, 2026 20:00
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Nov 4, 2026
**v0.1.7-nightly.20261104.4151** · 155 changes from 31 contributors

- **Share thread links.** Copy a thread link to share anywhere and open the thread directly.
- **Secret-backed usage limits.** Use a secret provider such as 1Password for usage-limit source keys.
- **Windows Group Policy.** Windows administrators can configure T3 Code using a Group Policy template.
- **Faster pairing.** New pairing links display their QR code immediately in Settings.
- **Saved drafts.** Drafts saved by older versions now survive updates.
- **Codex threads.** Codex threads open in another client are no longer silently replaced.
- **Background work.** Queued provider or model switches no longer end running background agents and commands.

### Plus 137 more bug fixes and performance improvements.

<details>
<summary>Full changelog</summary>

## What's Changed
* fix(github): Rebase stack no longer conflicts after a lower layer is squash-merged by @saphid in pingdotgg/t3code#29919
* fix(server): changing a task's wake policy no longer reverts a checkpointed parent run by @juliusmarminge in pingdotgg/t3code#25662
* perf(server): settled PR lookups stop re-spawning git every sweep by @juliusmarminge in pingdotgg/t3code#29721
* fix(server): generated commit and PR text ignores git signature output by @saphid in pingdotgg/t3code#29580
* fix(web): picking a branch in a subfolder project keeps the thread in the project folder by @saphid in pingdotgg/t3code#29908
* fix(mobile): close and reopen pull requests from the actions menu by @juliusmarminge in pingdotgg/t3code#29962
* fix(web): mouse wheel over the thread minimap glides instead of jumping by @flamboh in pingdotgg/t3code#29038
* fix(server): managed policy covers Kiro by @juliusmarminge in pingdotgg/t3code#29915
* fix(server): t3 update installs from the policy's update mirror by @juliusmarminge in pingdotgg/t3code#29911
* fix(desktop): Ctrl+R on macOS reaches the preview page instead of reloading it by @saphid in pingdotgg/t3code#29893
* fix(server): native forks after an undo no longer copy later turns by @saphid in pingdotgg/t3code#29902
* fix(server): idle compaction still runs after a queued message is removed or steered by @saphid in pingdotgg/t3code#29904
* fix(server): guests of a forked thread can open files on the messages it inherited by @saphid in pingdotgg/t3code#29794
* fix(evals): resume browser verification after unavailable status by @Yash-Singh1 in pingdotgg/t3code#30298
* fix(shared): saving one source control token no longer drops the other hosts' tokens by @yordis in pingdotgg/t3code#29554
* fix(desktop): a policy that stops startup no longer points at another release by @juliusmarminge in pingdotgg/t3code#30319
* docs: pin an absolute binary path under a permission cap by @juliusmarminge in pingdotgg/t3code#29916
* fix(mobile): Android follow-up menu shows in full with the keyboard open by @juliusmarminge in pingdotgg/t3code#29263
* fix(web): deleting the open thread no longer opens a snoozed or settled thread by @juliusmarminge in pingdotgg/t3code#29643
* fix(web): closing Settings or Usage no longer jumps back to a quote's source by @juliusmarminge in pingdotgg/t3code#29013
* fix(server): squash-merged branches no longer offer push & create PR by @juliusmarminge in pingdotgg/t3code#28494
* fix(mobile): settings providers show the ACP registry icon by @juliusmarminge in pingdotgg/t3code#28135
* fix(server): Grok usage limits tell Legacy-mode xAI accounts to switch to Privacy Mode by @juliusmarminge in pingdotgg/t3code#28097
* fix(usage): label a proxied Claude account by its e-mail, and drop .json from hub rows by @juliusmarminge in pingdotgg/t3code#28065
* fix(gitlab): a signed-out default glab host no longer hides other signed-in hosts by @juliusmarminge in pingdotgg/t3code#27840
* perf(server): prune events the projections already cover by @juliusmarminge in pingdotgg/t3code#29806
* fix(server): GPT-6.1 Sol no longer compacts after every tool call on managed Codex by @maria-rcks in pingdotgg/t3code#30004
* feat(policy): admins set managed policy from a Group Policy template by @juliusmarminge in pingdotgg/t3code#29862
* perf(server): bound streaming recovery reads by active runs by @Yash-Singh1 in pingdotgg/t3code#30357
* perf(server): read pull request metadata from a lightweight snapshot by @Yash-Singh1 in pingdotgg/t3code#30356
* fix(server): cancelling worktree setup no longer leaves its new branch behind by @saphid in pingdotgg/t3code#29781
* feat(mobile): add on-device Android dictation by @PixPMusic in pingdotgg/t3code#26734
* feat(server): read usage limit source keys from a secret provider by @yordis in pingdotgg/t3code#27760
* feat(device): read the EAS access token from a secret provider by @yordis in pingdotgg/t3code#27763
* fix(server): route missing read-only queries to readers by @Yash-Singh1 in pingdotgg/t3code#30366
* perf(server): index delegated recovery candidates by @Yash-Singh1 in pingdotgg/t3code#30359
* feat(server,web,mobile,desktop): Copy thread copies a link that opens the thread by @juliusmarminge in pingdotgg/t3code#26290
* feat(mobile,web): copied thread links open the mobile app by @juliusmarminge in pingdotgg/t3code#29815
* fix(antigravity): rate-limited turns keep their reset time by @saphid in pingdotgg/t3code#29594
* fix(server): startup no longer hangs on a shell stuck in the kernel by @AdEx-Partners-DE in pingdotgg/t3code#27938
* fix(server): reverting files before the first commit no longer leaves them staged by @Abhishek-B-R in pingdotgg/t3code#28647
* fix(server): truncated Claude task output no longer starts with a replacement character by @Abhishek-B-R in pingdotgg/t3code#28643
* fix(shared): relative file links with routing punctuation open as files by @Abhishek-B-R in pingdotgg/t3code#28637
* fix(server): messages cut by a restart no longer stay marked as streaming by @Abhishek-B-R in pingdotgg/t3code#28646
* fix(server): Antigravity Auto asks instead of approving every request by @parmartejass in pingdotgg/t3code#23698
* fix(server): Codex threads open in another client are no longer silently replaced by @derektrimm in pingdotgg/t3code#21045
* fix(server): WSL servers avoid ports already used by Windows by @tylerjenningsw in pingdotgg/t3code#22962
* perf(web): reuse repeated inline skill lookups by @luke2x in pingdotgg/t3code#29008
* fix(opencode): expand home-relative executable paths by @voltcrash in pingdotgg/t3code#29326
* fix(server): title regeneration works after a thread's worktree is cleaned up by @saphid in pingdotgg/t3code#29606
* fix(server): dev servers a Codex agent starts show under its thread by @saphid in pingdotgg/t3code#29687
* fix(server): status no longer fetches a remote named after a local tracked branch by @saphid in pingdotgg/t3code#29670
* fix(server): preview snapshots no longer cut an emoji in half by @saphid in pingdotgg/t3code#29600
* fix(server): restart notes no longer split an emoji in a long background task label by @saphid in pingdotgg/t3code#29647
* fix(acp): Always allow no longer cancels the turn when an agent only offers allow-once by @MarcoDotIO in pingdotgg/t3code#29463
* fix(server): forking a Codex thread archived outside T3 Code no longer fails by @saphid in pingdotgg/t3code#29618
* perf(shared): stop single-token message search at the best hit by @hieu-lee in pingdotgg/t3code#28930
* fix(preview): a dropped stream withdraws its stale file picker by @saphid in pingdotgg/t3code#29655
* fix(provider-acp): ACP threads keep receiving events after a rollback by @trevoedwards in pingdotgg/t3code#28987
* perf(opencode): provider event logs skip per-token reply deltas by @saphid in pingdotgg/t3code#29673
* fix(web): open files from Claude and ACP tool-call diffs by @Jo2234 in pingdotgg/t3code#29309
* fix(server): files tree labels ignored folders inside git submodules by @saphid in pingdotgg/t3code#29650
* fix(server): server updates reclaim partial database backups left by killed updates by @MarcoDotIO in pingdotgg/t3code#29464
* fix(server): PR watch wakes no longer split an emoji in a long comment by @saphid in pingdotgg/t3code#29633
* fix(server): pinning a settled thread stamps its return to the active list by @saphid in pingdotgg/t3code#29602
* fix(server): Claude's commands no longer run Electron apps as Node by @u9g in pingdotgg/t3code#29413
* docs: keybindings guide lists the rightPanelOpen when key by @saphid in pingdotgg/t3code#29677
* perf(shared): avoid redundant visibility work on status updates by @hieu-lee in pingdotgg/t3code#28965
* fix(desktop): failed settings saves no longer leave temp files behind by @saphid in pingdotgg/t3code#29635
* fix(acp): a final agent message without a trailing newline is no longer dropped by @saphid in pingdotgg/t3code#29605
* fix(server): terminal history keeps output after an unterminated OSC by @saphid in pingdotgg/t3code#29604
* fix(cli): t3 up's pairing hint keeps --base-dir by @saphid in pingdotgg/t3code#29684
* fix(shared): preserve omitted components in zero-major caret ranges by @Jo2234 in pingdotgg/t3code#29335
* fix(server): thread titles use linked PR context when the URL is followed by a colon or bold markers by @saphid in pingdotgg/t3code#29656
* fix(source-control): remotes like github.com:owner/repo reach their host by @MarcoDotIO in pingdotgg/t3code#29457
* fix(server): terminal history keeps text with C1 characters by @saphid in pingdotgg/t3code#29649
* fix(server): worktree handoff follows the project's start-from-origin setting by @saphid in pingdotgg/t3code#29810
* fix(server): review keeps tracked changes when untracked files overflow the listing by @saphid in pingdotgg/t3code#29615
* fix(server): browser setup advice names the server's T3 home by @saphid in pingdotgg/t3code#29646
* fix: honor generic MIME aliases in attachment previews by @Jo2234 in pingdotgg/t3code#29360
* fix(client-runtime): terminals fit their pane again after a reconnect by @saphid in pingdotgg/t3code#29696
* fix(server): Run now on a scheduled task says why it was refused by @saphid in pingdotgg/t3code#29620
* fix(server): a preview_open whose first load fails no longer leaves a hidden tab behind by @saphid in pingdotgg/t3code#29865
* fix(cursor): Cursor text generation names usage-limit failures by @saphid in pingdotgg/t3code#29748
* fix(server): review diffs keep working with untracked files outside the sparse cone by @saphid in pingdotgg/t3code#29880
* fix(opencode): nested custom commands like /git/commit run as commands by @saphid in pingdotgg/t3code#29765
* fix(source-control): renamed files in GitHub, GitLab and Azure DevOps diffs show as renames by @saphid in pingdotgg/t3code#29774
* fix(opencode): a command that exits non-zero is stored as failed, not completed by @saphid in pingdotgg/t3code#29824
* fix(server): linked environments pick up the other machine's new name by @saphid in pingdotgg/t3code#29779
* fix(server): document text skips tracked deletions and field codes by @saphid in pingdotgg/t3code#29796
* fix(server): OTLP export settings survive a saved token streaming mode by @saphid in pingdotgg/t3code#29786
* fix(server): Word text boxes are no longer extracted twice for agents by @saphid in pingdotgg/t3code#29827
* fix(server): new projects are created when core.safecrlf refuses LF files by @saphid in pingdotgg/t3code#29843
* fix(web): drafts saved by older versions load instead of being wiped by @saphid in pingdotgg/t3code#29828
* fix(server): Antigravity text generation shows sign-in and setup errors by @saphid in pingdotgg/t3code#29823
* fix(web): picking a custom model named like a Codex alias keeps that model by @saphid in pingdotgg/t3code#29789
* fix(server): turn checkpoints keep LF files when core.safecrlf is true by @saphid in pingdotgg/t3code#29826
* fix(shared): find in thread matches a word typed with a curly apostrophe by @saphid in pingdotgg/t3code#29759
* fix(server): review rows for nested repositories load in large diffs by @saphid in pingdotgg/t3code#29693
* fix(server): t3_worktree_list lists refs after storage cleanup removes a thread's worktree by @saphid in pingdotgg/t3code#29645
* fix(provider-core): text generation context cuts no longer split an emoji by @saphid in pingdotgg/t3code#29653
* fix(server): html_preview no longer splits an emoji in a long console line by @saphid in pingdotgg/t3code#29844
* fix(server): diffs keep submodule changes under diff.submodule=log by @saphid in pingdotgg/t3code#29852
* fix(opencode): OpenCode 2 titles for image messages skip images the server cannot open by @saphid in pingdotgg/t3code#29819
* fix(server): orchestrator_capabilities no longer offers providers the project turned off by @saphid in pingdotgg/t3code#29842
* fix(web): big terminal selections no longer break sending by @saphid in pingdotgg/t3code#29804
* test(web): file editor dismissal test waits for the editor to render by @juliusmarminge in pingdotgg/t3code#30350
* test(web): worked-for heading test clicks once the list is revealed by @juliusmarminge in pingdotgg/t3code#30404
* fix(azure-devops): legacy DefaultCollection pull request URLs can be pasted to check out by @saphid in pingdotgg/t3code#29763
* fix(shared): preview_open reports about: and mailto: as unsupported instead of misreading them by @saphid in pingdotgg/t3code#29614
* fix(server): delegated threads no longer share one provider event log by @onlydole in pingdotgg/t3code#29770
* fix(server): a queued provider switch no longer ends background work by @juliusmarminge in pingdotgg/t3code#30401
* fix(kiro): slow kiro-cli starts no longer show Kiro as unavailable by @saphid in pingdotgg/t3code#29841
* fix(client): mark unread sticks on a thread reopened within ten minutes by @saphid in pingdotgg/t3code#29814
* fix(pi): extension errors name folder extensions instead of "index" by @saphid in pingdotgg/t3code#29768
* fix(github): Enterprise Server pull request URLs can be pasted to check out by @saphid in pingdotgg/t3code#29892
* fix(server): a peer refusing one call no longer marks its link as failing by @saphid in pingdotgg/t3code#29914
* perf(server): Claude skill discovery resolves each repository root once by @onlydole in pingdotgg/t3code#29757
* fix(server): t3 service uninstall leaves another T3 home's service alone by @saphid in pingdotgg/t3code#29872
* fix(server): PR watches wake again when a push leaves the branch conflicting by @saphid in pingdotgg/t3code#29767
* fix(muse): the thread error banner no longer shows unredacted failure text by @saphid in pingdotgg/t3code#29910
* fix(server): provider settings changed mid-refresh no longer revert to the old status by @saphid in pingdotgg/t3code#29894
* fix(shared): accept whitespace after engine range operators by @romil-bijarnia in pingdotgg/t3code#29730
* perf(server): stop tracing per-event live coalescer work by @onlydole in pingdotgg/t3code#29758
* test(desktop): the Windows shell kill test waits for each spawn before advancing the clock by @maria-rcks in pingdotgg/t3code#30463
* fix(shared): ignore unsupported command output control parameters by @romil-bijarnia in pingdotgg/t3code#29736
* fix(cli): t3 update no longer says a service awaiting restart runs the new version by @saphid in pingdotgg/t3code#29901
* fix(mcp): accept CR and mixed line endings in response streams by @romil-bijarnia in pingdotgg/t3code#29727
* fix(server): preview tabs that fail during setup no longer leave their page open by @saphid in pingdotgg/t3code#29885
* fix(provider-core): long subagent titles no longer end in a broken character by @saphid in pingdotgg/t3code#29906
* fix(shared): ignore unsupported command output erase modes by @romil-bijarnia in pingdotgg/t3code#29737
* fix(server): a failed scheduled run shows its error without a stack trace by @saphid in pingdotgg/t3code#29889
* perf(web): long threads stream with 70% less work-row derivation by @Entrpi in pingdotgg/t3code#29971
* fix(pi): send SIGTERM before closing Pi's stdin on teardown by @yaacovcorcos in pingdotgg/t3code#30025
* fix(server): clean up child worktrees after their parent settles by @voltcrash in pingdotgg/t3code#30026
* fix(server): Claude context meter shows the window for models outside the catalog by @hahhforest in pingdotgg/t3code#30051
* fix(server): quitting no longer waits on an unreachable telemetry endpoint by @levelorbit in pingdotgg/t3code#30033
* fix(client): keep snoozed failures hidden without completion times by @voltcrash in pingdotgg/t3code#30063
* perf(server): PR sync stops reading pull requests closed over a day ago by @advaitpaliwal in pingdotgg/t3code#30071
* fix(acp): file changes show the patch of every diff in a tool call by @Abhishek-B-R in pingdotgg/t3code#28631
* fix(server): Antigravity sign-in no longer blames the network while the runtime starts by @wenshen18643 in pingdotgg/t3code#30079
* fix(relay): read migrations in checkout paths with spaces by @domvox in pingdotgg/t3code#30080
* fix(cli): validate npm runtime before caching it by @voltcrash in pingdotgg/t3code#30099
* fix(server): SSH device host no longer reconnects on a single slow health probe by @gyurix in pingdotgg/t3code#30159
* fix(server): read continued core.bare values during onboarding by @imharjot in pingdotgg/t3code#30174
* fix(server): published repos fall back to HTTPS when SSH is refused by @saphid in pingdotgg/t3code#30142
* fix(opencode): fail stalled event subscriptions promptly by @voltcrash in pingdotgg/t3code#30201
* fix(server): a link card the user moved past no longer blocks auto-settle by @saphid in pingdotgg/t3code#29847
* fix(server): deleting a thread also removes its agent preview recordings by @saphid in pingdotgg/t3code#29853
* fix(server): review guides no longer fail on the repository's checkout hooks by @saphid in pingdotgg/t3code#29907
* fix(desktop): bump Electron to 44.10.1 for October Chromium security backports by @valuin in pingdotgg/t3code#30161
* chore(repos): sync reference repos from shallow clones by @juliusmarminge in pingdotgg/t3code#30472
* chore(repos): sync Effect 4.1.2 and Alchemy beta.85, rename effect-smol by @juliusmarminge in pingdotgg/t3code#30481
* Revert "fix(web): terminal controls no longer cover the first line" by @juliusmarminge in pingdotgg/t3code#30493
* feat(web): show a newly created pairing link without expanding the client list by @juliusmarminge in pingdotgg/t3code#30498

## New Contributors
* @Abhishek-B-R made their first contribution in pingdotgg/t3code#28647
* @tylerjenningsw made their first contribution in pingdotgg/t3code#22962
* @Jo2234 made their first contribution in pingdotgg/t3code#29309
* @u9g made their first contribution in pingdotgg/t3code#29413
* @onlydole made their first contribution in pingdotgg/t3code#29770
* @romil-bijarnia made their first contribution in pingdotgg/t3code#29730
* @Entrpi made their first contribution in pingdotgg/t3code#29971
* @hahhforest made their first contribution in pingdotgg/t3code#30051
* @levelorbit made their first contribution in pingdotgg/t3code#30033
* @advaitpaliwal made their first contribution in pingdotgg/t3code#30071
* @wenshen18643 made their first contribution in pingdotgg/t3code#30079
* @domvox made their first contribution in pingdotgg/t3code#30080
* @gyurix made their first contribution in pingdotgg/t3code#30159
* @imharjot made their first contribution in pingdotgg/t3code#30174
* @valuin made their first contribution in pingdotgg/t3code#30161

**Full Changelog**: pingdotgg/t3code@v0.1.7-nightly.20261103.4138...v0.1.7-nightly.20261104.4151

</details>


Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.7-nightly.20261104.4151
paulsenon-r added a commit to rakutenanalytics/t3code that referenced this pull request Nov 10, 2026
…19)

* perf(client-runtime): expanding deferred work skips an unused timeline rebuild (pingdotgg#29114)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): honor relocated systemd user configuration (pingdotgg#29244)

* fix(web): review comments keep a trailing blank line in their diff (pingdotgg#29575)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): side chat and merge-back context no longer cut an emoji in half (pingdotgg#29572)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): loading a file's diff skips unused repository lookups (pingdotgg#29115)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(cli): make relative install homes produce working commands (pingdotgg#29241)

* fix(forgejo): dismissed reviews no longer read as requested changes or approvals (pingdotgg#29567)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): Linux file links preserve literal backslashes (pingdotgg#29245)

* fix(gitcafe): PR link previews show a GitHub-merged pull request as merged (pingdotgg#29595)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(codex): restoring a checkpoint works after the Codex session was archived (pingdotgg#29582)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* perf(acp): ACP agents skip decoding output twice for unused diagnostics (pingdotgg#29100)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): diffs keep blank context lines under diff.suppressBlankEmpty (pingdotgg#29579)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(scripts): check:changed passes when only lint-ignored code changed (pingdotgg#29596)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(client): streamed row updates no longer rescan question history (pingdotgg#29105)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(desktop): keep Linux MIME helpers off the startup path (pingdotgg#29247)

* perf(server): shell updates read a burst of threads once (pingdotgg#29101)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): forks from compacted threads no longer fail (pingdotgg#29221)

* fix(scripts): check:changed lints Astro components and runs knip for them (pingdotgg#29573)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(desktop): Linux .deb no longer installs files any local user can overwrite (pingdotgg#28351)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(desktop): native builds prepare server bytecode again after the Effect 4.1.2 upgrade (pingdotgg#29780)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(codex): a background command's wake no longer hangs when its output tail splits an emoji (pingdotgg#29168)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* test(scripts): expect the unmatched-pattern flag in the Astro check:changed test (pingdotgg#29839)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(mobile): drafts on threads with colons in their ids upload attachments early (pingdotgg#29717)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): provider refresh no longer reverts an enriched sign-in status (pingdotgg#29627)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): forked Claude threads keep their compaction chain (pingdotgg#27577)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Claude subagents left by a stopped process no longer stay Running (pingdotgg#28356)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): usage-limit auto-resume no longer arms children of settled parents (pingdotgg#27951)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(cursor): a write-after-end in the Cursor SDK no longer stops the server (pingdotgg#27703)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): avoid reparsing streamed replies for timestamps (pingdotgg#25252)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): project settings can set a checkout's grouping rule again (pingdotgg#23641)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): reject oversized goal objectives before dispatch (pingdotgg#23033)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): checkpoints no longer rehash every file when one entry is skip-worktree or assume-unchanged (pingdotgg#23624)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web,mobile): chat images reload when the agent rewrites the file (pingdotgg#29741)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): show the project pin before the remote badge (pingdotgg#29704)

* fix(server): Codex usage keeps requests from interrupted turns (pingdotgg#29415)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(client-runtime): connect to the primary environment while the browser reports offline (pingdotgg#29347)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): a failed worktree add no longer leaves its new branch behind (pingdotgg#28373)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(provider-acp): Kiro's html_render pages show in the thread (pingdotgg#28253)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): streamed Browser clicks no longer wait behind queued wheel bursts (pingdotgg#28236)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Codex turns that fail with an unlisted error code no longer stay running (pingdotgg#28040)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): sessions open through OpenCode 2 after an in-place upgrade from 1.x (pingdotgg#27779)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): T3 Connect not-linked fix no longer tells Desktop users to run t3 service restart (pingdotgg#27660)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): anchor Claude wake cooldowns to result arrival (pingdotgg#25061)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): match new-thread hero to selected checkout (pingdotgg#25064)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): stop PR lookups in emptied worktree folders (pingdotgg#24803)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): agent session scans no longer hang the server on an unreadable .git/config (pingdotgg#23690)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(connect): held webhooks are kept per managed link (pingdotgg#23612)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): delegated children keep replies after their parent settles (pingdotgg#23456)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(preview): explain invalid URLs and locators (pingdotgg#23396)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): terminal controls no longer cover the first line (pingdotgg#23373)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): stop maintaining the unused event correlation index (pingdotgg#23211)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(mcp): document existing recurring-task tools (pingdotgg#23199)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): release the previous session when sending to another instance (pingdotgg#23198)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(claude): a background-task wake run no longer hangs after a user turn absorbed its wake (pingdotgg#28010)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(server): OpenCode no longer drops a $skill read before its directory scan ends (pingdotgg#29535)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): coalesced webhook runs use the prompt saved before dispatch (pingdotgg#29476)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): slow forge CLI calls no longer delay checkpoints and turn starts (pingdotgg#28431)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(relay): T3 Connect repairs tunnel ingress that drifted from a matching origin (pingdotgg#27961)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(provider-core): npm-installed Claude in ~/.local gets npm updates (pingdotgg#27957)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): git hooks keep the user's locale (pingdotgg#27778)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(pi): hold messages until compaction ends (pingdotgg#24388)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): show why Claude refuses full access as root (pingdotgg#23804)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): preview click timeouts identify the target (pingdotgg#23489)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(cursor): supporting files no longer hide sibling skills (pingdotgg#23326)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* fix(web): usage-limit retry notice shows the timezone (pingdotgg#23029)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): preserve nested Claude subagent completion across turns (pingdotgg#23561)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): publish ordered pending-work snapshots (pingdotgg#21460)

Co-authored-by: Exotic209093 <134711311+Exotic209093@users.noreply.github.com>
Co-authored-by: Issue triage verification <triage@localhost>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): decode compaction history from OpenCode 2.1 (pingdotgg#22661)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* fix(server): import valid conversations within each transcript record limit (pingdotgg#23192)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): imported Claude sessions resume on their first turn (pingdotgg#23219)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(web): ask for a GitHub star when idle, and star in one click (pingdotgg#29922)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): subagent questions reach a busy parent agent (pingdotgg#29909)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(web): celebrate a GitHub star with confetti (pingdotgg#29987)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(pi): short-lived Pi processes no longer lose rotated OAuth tokens (pingdotgg#30187)

* feat(web): add refresh to provider status banners (pingdotgg#24861)

* fix(server): side chats no longer open with a model switch from the parent's turn (pingdotgg#29752)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): copied code blocks keep their blank lines in lists, quotes and longer fences (pingdotgg#29755)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): compact model picker row indicators (pingdotgg#26415)

* fix(web): open project picker from boring sidebar's header (pingdotgg#26495)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(client): project removal counts only listed threads, not side chats or subagents (pingdotgg#29917)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): text generation errors explain known provider failures without raw provider text (pingdotgg#29877)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): multi-file patches show every changed file (pingdotgg#29878)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): handoff context names every file of a multi-file patch (pingdotgg#29905)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): commits and PR text see changes outside a subfolder project under diff.relative (pingdotgg#29879)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): opening a project from the command palette no longer lands in a subagent or side chat (pingdotgg#29891)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): device host checks show the error without a stack trace (pingdotgg#29912)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(web): open full access menu from the new thread context strip (pingdotgg#30275)

* fix(web): long server lists in thread details now page 4 at a time (pingdotgg#28684)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): keep the project filter menu aligned with its trigger

* fix(github): Rebase stack no longer conflicts after a lower layer is squash-merged (pingdotgg#29919)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): changing a task's wake policy no longer reverts a checkpointed parent run (pingdotgg#25662)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): settled PR lookups stop re-spawning git every sweep (pingdotgg#29721)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): generated commit and PR text ignores git signature output (pingdotgg#29580)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): picking a branch in a subfolder project keeps the thread in the project folder (pingdotgg#29908)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Maria <maria-rcks@users.noreply.github.com>

* fix(mobile): close and reopen pull requests from the actions menu (pingdotgg#29962)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): mouse wheel over the thread minimap glides instead of jumping (pingdotgg#29038)

* fix(server): managed policy covers Kiro (pingdotgg#29915)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): t3 update installs from the policy's update mirror (pingdotgg#29911)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(desktop): Ctrl+R on macOS reaches the preview page instead of reloading it (pingdotgg#29893)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): native forks after an undo no longer copy later turns (pingdotgg#29902)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): idle compaction still runs after a queued message is removed or steered (pingdotgg#29904)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): guests of a forked thread can open files on the messages it inherited (pingdotgg#29794)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(evals): resume browser verification after unavailable status (pingdotgg#30298)

* fix(shared): saving one source control token no longer drops the other hosts' tokens (pingdotgg#29554)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* fix(desktop): a policy that stops startup no longer points at another release (pingdotgg#30319)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs: pin an absolute binary path under a permission cap (pingdotgg#29916)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): Android follow-up menu shows in full with the keyboard open (pingdotgg#29263)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): deleting the open thread no longer opens a snoozed or settled thread (pingdotgg#29643)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): closing Settings or Usage no longer jumps back to a quote's source (pingdotgg#29013)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): squash-merged branches no longer offer push & create PR (pingdotgg#28494)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): settings providers show the ACP registry icon (pingdotgg#28135)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Grok usage limits tell Legacy-mode xAI accounts to switch to Privacy Mode (pingdotgg#28097)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(usage): label a proxied Claude account by its e-mail, and drop .json from hub rows (pingdotgg#28065)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(gitlab): a signed-out default glab host no longer hides other signed-in hosts (pingdotgg#27840)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): prune events the projections already cover (pingdotgg#29806)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): GPT-6.1 Sol no longer compacts after every tool call on managed Codex (pingdotgg#30004)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(policy): admins set managed policy from a Group Policy template (pingdotgg#29862)

Co-authored-by: Matthew Feroz <136640686+MatthewFeroz@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): bound streaming recovery reads by active runs (pingdotgg#30357)

* perf(server): read pull request metadata from a lightweight snapshot

PR discovery used the full shell snapshot, which derived activity and counted historical items across active threads. Read only PR metadata and its event sequence in one transaction, then decode after releasing the reader. Preserve settled backfill, targeted refreshes, legacy PR normalization, and guarded updates.

Validation: check:changed passed with 80 tests after merging main; CI passed on 988187f. Native Electron measurements and a concurrent-write control confirmed metadata parity and coherent sequences. Synthetic measurements cover PR reads and service initialization, not full desktop startup.

Model: GPT 6.1 Sol. Harness: Codex in T3 Code.

* fix(server): cancelling worktree setup no longer leaves its new branch behind (pingdotgg#29781)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(mobile): add on-device Android dictation (pingdotgg#26734)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Alex Jankowiak <alexjankowiak@nebius.com>

* feat(server): read usage limit source keys from a secret provider (pingdotgg#27760)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(device): read the EAS access token from a secret provider (pingdotgg#27763)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): route missing read-only queries to readers

## Problem

Several read-only queries in projection reads, legacy shell reconciliation, and peer link lookups ran on the SQLite writer. This added avoidable work to the writer connection and could delay writes.

## Change

Marked `getThreadProjection`, the independent legacy importer selectors, and peer link reads with the SQLite `readOnly` context marker. The full projection read uses one reader transaction so concurrent commits cannot mix its local and inherited history. Reads inside existing write transactions retain the writer and see uncommitted changes. Added file-backed routing coverage for reader selection and transaction visibility.

## Scope and approval

This is a focused fix for missing read-only routing boundaries identified in the parent audit. It changes no SQL selection logic or pool configuration. Full projection reads now hold one consistent snapshot.

## Verification

The file-backed tests recorded projection queries, importer selectors, and peer link lookups on reader connections. They also confirmed that reads inside write transactions see uncommitted projection, repair, shell, and link updates. A deterministic concurrent-commit regression failed before the projection transaction fix and passes afterward. Focused suites passed, with 90 tests. `vp run check:changed` passed, including 72 tests in its final run, and `git diff --check` passed.

No startup time saving was measured. The existing shell snapshot query cost is unchanged.

GPT 6.1 Sol, Codex

* perf(server): index delegated recovery candidates (pingdotgg#30359)

Add guarded partial indexes for delegated recovery candidate selectors and retain existing recovery eligibility. Include migration and query-plan regression coverage, plus preview-upgrade expectations.

GPT 6.1 Sol, Codex.

* feat(server,web,mobile,desktop): Copy thread copies a link that opens the thread (pingdotgg#26290)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(mobile,web): copied thread links open the mobile app (pingdotgg#29815)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(antigravity): rate-limited turns keep their reset time (pingdotgg#29594)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): startup no longer hangs on a shell stuck in the kernel (pingdotgg#27938)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): reverting files before the first commit no longer leaves them staged (pingdotgg#28647)

* fix(server): truncated Claude task output no longer starts with a replacement character (pingdotgg#28643)

* fix(shared): relative file links with routing punctuation open as files (pingdotgg#28637)

* fix(server): messages cut by a restart no longer stay marked as streaming (pingdotgg#28646)

* fix(server): Antigravity Auto asks instead of approving every request (pingdotgg#23698)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): Codex threads open in another client are no longer silently replaced (pingdotgg#21045)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(server): WSL servers avoid ports already used by Windows (pingdotgg#22962)

Co-authored-by: maria-rcks <maria@kuuro.net>

* perf(web): reuse repeated inline skill lookups (pingdotgg#29008)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(opencode): expand home-relative executable paths (pingdotgg#29326)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(server): title regeneration works after a thread's worktree is cleaned up (pingdotgg#29606)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): dev servers a Codex agent starts show under its thread (pingdotgg#29687)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): status no longer fetches a remote named after a local tracked branch (pingdotgg#29670)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(server): preview snapshots no longer cut an emoji in half (pingdotgg#29600)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): restart notes no longer split an emoji in a long background task label (pingdotgg#29647)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(acp): Always allow no longer cancels the turn when an agent only offers allow-once (pingdotgg#29463)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): forking a Codex thread archived outside T3 Code no longer fails (pingdotgg#29618)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* perf(shared): stop single-token message search at the best hit (pingdotgg#28930)

* fix(preview): a dropped stream withdraws its stale file picker (pingdotgg#29655)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(provider-acp): ACP threads keep receiving events after a rollback (pingdotgg#28987)

Co-authored-by: Trevor Edwards <9443483+trevoedwards@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(opencode): provider event logs skip per-token reply deltas (pingdotgg#29673)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): open files from Claude and ACP tool-call diffs (pingdotgg#29309)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): files tree labels ignored folders inside git submodules (pingdotgg#29650)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): server updates reclaim partial database backups left by killed updates (pingdotgg#29464)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): PR watch wakes no longer split an emoji in a long comment (pingdotgg#29633)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): pinning a settled thread stamps its return to the active list (pingdotgg#29602)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Claude's commands no longer run Electron apps as Node (pingdotgg#29413)

* docs: keybindings guide lists the rightPanelOpen when key (pingdotgg#29677)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(shared): avoid redundant visibility work on status updates (pingdotgg#28965)

* fix(desktop): failed settings saves no longer leave temp files behind (pingdotgg#29635)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(acp): a final agent message without a trailing newline is no longer dropped (pingdotgg#29605)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): terminal history keeps output after an unterminated OSC (pingdotgg#29604)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(cli): t3 up's pairing hint keeps --base-dir (pingdotgg#29684)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): preserve omitted components in zero-major caret ranges (pingdotgg#29335)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): thread titles use linked PR context when the URL is followed by a colon or bold markers (pingdotgg#29656)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(source-control): remotes like github.com:owner/repo reach their host (pingdotgg#29457)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): terminal history keeps text with C1 characters (pingdotgg#29649)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): worktree handoff follows the project's start-from-origin setting (pingdotgg#29810)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): review keeps tracked changes when untracked files overflow the listing (pingdotgg#29615)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): browser setup advice names the server's T3 home (pingdotgg#29646)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix: honor generic MIME aliases in attachment previews (pingdotgg#29360)

* fix(client-runtime): terminals fit their pane again after a reconnect (pingdotgg#29696)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Run now on a scheduled task says why it was refused (pingdotgg#29620)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): a preview_open whose first load fails no longer leaves a hidden tab behind (pingdotgg#29865)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(cursor): Cursor text generation names usage-limit failures (pingdotgg#29748)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): review diffs keep working with untracked files outside the sparse cone (pingdotgg#29880)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): nested custom commands like /git/commit run as commands (pingdotgg#29765)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(source-control): renamed files in GitHub, GitLab and Azure DevOps diffs show as renames (pingdotgg#29774)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(opencode): a command that exits non-zero is stored as failed, not completed (pingdotgg#29824)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): linked environments pick up the other machine's new name (pingdotgg#29779)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): document text skips tracked deletions and field codes (pingdotgg#29796)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): OTLP export settings survive a saved token streaming mode (pingdotgg#29786)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Word text boxes are no longer extracted twice for agents (pingdotgg#29827)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): new projects are created when core.safecrlf refuses LF files (pingdotgg#29843)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): drafts saved by older versions load instead of being wiped (pingdotgg#29828)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Antigravity text generation shows sign-in and setup errors (pingdotgg#29823)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): picking a custom model named like a Codex alias keeps that model (pingdotgg#29789)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): turn checkpoints keep LF files when core.safecrlf is true (pingdotgg#29826)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): find in thread matches a word typed with a curly apostrophe (pingdotgg#29759)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): review rows for nested repositories load in large diffs (pingdotgg#29693)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): t3_worktree_list lists refs after storage cleanup removes a thread's worktree (pingdotgg#29645)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(provider-core): text generation context cuts no longer split an emoji (pingdotgg#29653)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): html_preview no longer splits an emoji in a long console line (pingdotgg#29844)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): diffs keep submodule changes under diff.submodule=log (pingdotgg#29852)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): OpenCode 2 titles for image messages skip images the server cannot open (pingdotgg#29819)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): orchestrator_capabilities no longer offers providers the project turned off (pingdotgg#29842)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): big terminal selections no longer break sending (pingdotgg#29804)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* test(web): file editor dismissal test waits for the editor to render (pingdotgg#30350)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* test(web): worked-for heading test clicks once the list is revealed (pingdotgg#30404)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(azure-devops): legacy DefaultCollection pull request URLs can be pasted to check out (pingdotgg#29763)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): preview_open reports about: and mailto: as unsupported instead of misreading them (pingdotgg#29614)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): delegated threads no longer share one provider event log (pingdotgg#29770)

Co-authored-by: Taylor Dolezal <117500+onlydole@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): a queued provider switch no longer ends background work (pingdotgg#30401)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kiro): slow kiro-cli starts no longer show Kiro as unavailable (pingdotgg#29841)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(client): mark unread sticks on a thread reopened within ten minutes (pingdotgg#29814)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(pi): extension errors name folder extensions instead of "index" (pingdotgg#29768)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(github): Enterprise Server pull request URLs can be pasted to check out (pingdotgg#29892)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): a peer refusing one call no longer marks its link as failing (pingdotgg#29914)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): Claude skill discovery resolves each repository root once (pingdotgg#29757)

Co-authored-by: Taylor Dolezal <117500+onlydole@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): t3 service uninstall leaves another T3 home's service alone (pingdotgg#29872)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): PR watches wake again when a push leaves the branch conflicting (pingdotgg#29767)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(muse): the thread error banner no longer shows unredacted failure text (pingdotgg#29910)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): provider settings changed mid-refresh no longer revert to the old status (pingdotgg#29894)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): accept whitespace after engine range operators (pingdotgg#29730)

* perf(server): stop tracing per-event live coalescer work (pingdotgg#29758)

Co-authored-by: Taylor Dolezal <117500+onlydole@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* test(desktop): the Windows shell kill test waits for each spawn before advancing the clock (pingdotgg#30463)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(shared): ignore unsupported command output control parameters (pingdotgg#29736)

* fix(cli): t3 update no longer says a service awaiting restart runs the new version (pingdotgg#29901)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mcp): accept CR and mixed line endings in response streams (pingdotgg#29727)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): preview tabs that fail during setup no longer leave their page open (pingdotgg#29885)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(provider-core): long subagent titles no longer end in a broken character (pingdotgg#29906)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): ignore unsupported command output erase modes (pingdotgg#29737)

* fix(server): a failed scheduled run shows its error without a stack trace (pingdotgg#29889)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(web): long threads stream with 70% less work-row derivation (pingdotgg#29971)

* fix(pi): send SIGTERM before closing Pi's stdin on teardown (pingdotgg#30025)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): clean up child worktrees after their parent settles (pingdotgg#30026)

* fix(server): Claude context meter shows the window for models outside the catalog (pingdotgg#30051)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): quitting no longer waits on an unreachable telemetry endpoint (pingdotgg#30033)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(client): keep snoozed failures hidden without completion times (pingdotgg#30063)

* perf(server): PR sync stops reading pull requests closed over a day ago (pingdotgg#30071)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(acp): file changes show the patch of every diff in a tool call (pingdotgg#28631)

* fix(server): Antigravity sign-in no longer blames the network while the runtime starts (pingdotgg#30079)

Co-authored-by: wenshen <wlum0002@student.monash.edu>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(relay): read migrations in checkout paths with spaces (pingdotgg#30080)

Co-authored-by: Dominik <git@domko.sbs>

* fix(cli): validate npm runtime before caching it (pingdotgg#30099)

* fix(server): SSH device host no longer reconnects on a single slow health probe (pingdotgg#30159)

* fix(server): read continued core.bare values during onboarding (pingdotgg#30174)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): published repos fall back to HTTPS when SSH is refused (pingdotgg#30142)

Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): fail stalled event subscriptions promptly (pingdotgg#30201)

* fix(server): a link card the user moved past no longer blocks auto-settle (pingdotgg#29847)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): deleting a thread also removes its agent preview recordings (pingdotgg#29853)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): review guides no longer fail on the repository's checkout hooks (pingdotgg#29907)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(desktop): bump Electron to 44.10.1 for October Chromium security backports (pingdotgg#30161)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* chore(repos): sync reference repos from shallow clones (pingdotgg#30472)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* chore(repos): sync Effect 4.1.2 and Alchemy beta.85, rename effect-smol (pingdotgg#30481)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Revert "fix(web): terminal controls no longer cover the first line" (pingdotgg#30493)

* feat(web): show a newly created pairing link without expanding the client list (pingdotgg#30498)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(safe): remediate inherited v0.1.7 advisories

Apply age-qualified dependency fixes and refresh frozen stage projections. Keep the two remaining tooling advisories outside shipped production graphs and record the reviewed v0.1.7 anchor.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>

* fix(safe): hide denied triage instead of suggesting upstream command

Honor the baked remoteContent policy in the server capability and boot recovery. Remove the upstream CLI fallback from triage failure toasts, cover denied recovery, and correct the security inventory.

Co-Authored-By: OpenAI Codex <codex@openai.com>

* ci(safe): run macOS jobs on macos-15 because macos-14 runners are no longer provisioned

Hosted macos-14 jobs are cancelled before start with 'configuration macos-14-arm64-us-default is not supported'.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore(safe): refresh network baseline for macos-15 workflow labels

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore(safe): approve reviewed v0.1.7 artifact host contexts

Reproduce the packaged CI host inventory from final-head bundles and installed production dependency text. Review the changed client contexts and mirror them into CLI scan paths; record conditional provider connector endpoints honestly.

Co-Authored-By: Codex <noreply@openai.com>

---------

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Andrei <108398860+Yuruzuu@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Exotic209093 <134711311+Exotic209093@users.noreply.github.com>
Co-authored-by: Issue triage verification <triage@localhost>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: astarktc <148526207+astarktc@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Maria <maria-rcks@users.noreply.github.com>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Matthew Feroz <136640686+MatthewFeroz@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: Alex Jankowiak <alexjankowiak@nebius.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: AdEx-Partners-DE <stark.burns@adexpartners.com>
Co-authored-by: Abhishek B R <byteblaster1468@gmail.com>
Co-authored-by: parmartejas <110296251+parmartejass@users.noreply.github.com>
Co-authored-by: Derek Trimm <275381468+derektrimm@users.noreply.github.com>
Co-authored-by: Tyler Jennings <tylerjennings2@outlook.com>
Co-authored-by: luke <97411838+luke2x@users.noreply.github.com>
Co-authored-by: MarcoDotIO <Marcus.Arnett10@gmail.com>
Co-authored-by: Hieu Le <78847613+hieu-lee@users.noreply.github.com>
Co-authored-by: Trevor <trevoedwards@users.noreply.github.com>
Co-authored-by: Trevor Edwards <9443483+trevoedwards@users.noreply.github.com>
Co-authored-by: Johan Vaz <v.johan2234@gmail.com>
Co-authored-by: u9g <43508353+u9g@users.noreply.github.com>
Co-authored-by: Taylor Dolezal <onlydole@users.noreply.github.com>
Co-authored-by: Taylor Dolezal <117500+onlydole@users.noreply.github.com>
Co-authored-by: Romil <romilbij@gmail.com>
Co-authored-by: Entrpi <133157614+Entrpi@users.noreply.github.com>
Co-authored-by: yaacovcorcos <coryacos1@gmail.com>
Co-authored-by: Chunhao Zhang <55630163+hahhforest@users.noreply.github.com>
Co-authored-by: levelorbit <172493156+levelorbit@users.noreply.github.com>
Co-authored-by: Advait Paliwal <advaitspaliwal@gmail.com>
Co-authored-by: wenshen18643 <wenshen18643@gmail.com>
Co-authored-by: wenshen <wlum0002@student.monash.edu>
Co-authored-by: domvox <126301539+domvox@users.noreply.github.com>
Co-authored-by: Dominik <git@domko.sbs>
Co-authored-by: gyurix <barathgy@gmail.com>
Co-authored-by: Harjot Singh <42799925+imharjot@users.noreply.github.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: Valtrizt Khalifah Warri <108137942+valuin@users.noreply.github.com>
Co-authored-by: GPT-6.1-Sol <noreply@openai.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix Fix PR opened by an issue lead; enters the PR loop pr:ready Every gate passed; waits for Julius's land label size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Git action button offers "Push & create PR" after the branch's PR was squash- or rebase-merged

1 participant