Skip to content

fix(web): instructed compact runs without a bare compaction first - #24008

Merged
juliusmarminge merged 9 commits into
mainfrom
takeover/20236-compact-instructions-r2
Oct 23, 2026
Merged

juliusmarminge merged 9 commits into
mainfrom
takeover/20236-compact-instructions-r2

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Fixes duplicate compaction when a resumed Claude thread sends /compact with instructions while the Compact chip is enabled.

Original description by @fixfon

With the Compact chip enabled on a resumed Claude thread, sending /compact with instructions queued a bare compaction before the instructed command. This could compact twice and lose the benefit of the supplied instructions.

Recognize /compact followed by whitespace as an explicit compaction request, so it bypasses automatic pre-send compaction. Ordinary messages retain their existing behavior.

Validation: 138 focused cases passed, including one retained regression case that fails with the original exact-match predicate. Web typecheck and format passed; scoped lint reported existing warnings. Independent Claude Opus and GPT-6.1 reviews approved the source.

Integrated proof used the actual web composer, orchestration, Claude SDK, and an offline stream-json CLI peer. A completed peer turn was created first, then its context usage was aged to enable the Compact chip. Each case started from the same stopped snapshot and the SDK launched with --resume. The peer reports synthetic compaction: this verifies transport and command sequencing, not real model summarization or authentic Claude transcript restoration. Web was exercised; no native Electron or mobile run is claimed.

Case Commands received by the peer
Baseline, instructed compact /compact, then /compact keep the auth refactor notes
Reviewed head, instructed compact /compact keep the auth refactor notes only
Reviewed head, ordinary message /compact, then Continue reviewing the auth refactor notes.

Baseline precondition: Compact chip enabled with instructed command entered.

Baseline precondition: Compact chip enabled with instructed command entered

Reviewed head: one instructed compact command completed.

Reviewed head: one instructed compact command completed

Ordinary-message control: automatic compact then queued normal message.

Ordinary-message control: automatic compact then queued normal message

Sanitized command traces: baseline, reviewed head, ordinary-message control. The baseline screenshot shows the pre-send chip precondition; the trace establishes its two-command result.

Original contribution by @fixfon. Maintainer takeover: Claude Opus 5.5 for tests/review, Claude Fable 5.1 for implementation, GPT-6.1 for independent review; Claude Code and Codex harnesses.

Takeover

Retains @fixfon’s commits from #20236. Main moved submission into planComposerTurn; the same command-boundary guard is ported there. The existing dispatch regression test is expanded, and the single-caller helper is removed.

Evidence

Final head f2177590, merged main 4812dcad. Proof incomplete: all24 interaction recordings exist, but six wide settled-image comparisons require correction of an unrelated source-control card difference.

Fixture matrix. A1: instructed compact; C1: ordinary message; C2: bare uppercase; C3: command prefix; C4: Full then Compact; C5: Never then on-return.

Cell (CSS width/theme) Before recording
4812dca
After recording
f217759
Diff0 DiffT16 Proof status
A1-1440-dark A1-1440-dark-before.mp4 A1-1440-dark-after.mp4 A1-1440-dark-diff0.png A1-1440-dark-diffT.png Unverified: unmatched details card
A1-1440-light A1-1440-light-before.mp4 A1-1440-light-after.mp4 A1-1440-light-diff0.png A1-1440-light-diffT.png Unverified: unmatched details card
A1-390-dark A1-390-dark-before.mp4 A1-390-dark-after.mp4 A1-390-dark-diff0.png A1-390-dark-diffT.png Interaction captured; audit below
A1-390-light A1-390-light-before.mp4 A1-390-light-after.mp4 A1-390-light-diff0.png A1-390-light-diffT.png Interaction captured; audit below
C1-1440-dark C1-1440-dark-before.mp4 C1-1440-dark-after.mp4 Upload pending Upload pending Unverified: unmatched details card
C1-1440-light C1-1440-light-before.mp4 Upload pending Upload pending Upload pending Unverified: unmatched details card
C1-390-dark C1-390-dark-before.mp4 C1-390-dark-after.mp4 C1-390-dark-diff0.png Upload pending Interaction captured; audit below
C1-390-light C1-390-light-before.mp4 Upload pending Upload pending Upload pending Interaction captured; audit below
C2-1440-light C2-1440-light-before.mp4 Upload pending Upload pending Upload pending Unverified: unmatched details card
C3-390-dark C3-390-dark-before.mp4 Upload pending Upload pending Upload pending Interaction captured; audit below

|C4-390-light|C4-390-light-before.mp4|C4-390-light-after.mp4|C4-390-light-diff0.png|C4-390-light-diffT.png|Interaction captured; audit below|
|C5-1440-dark|C5-1440-dark-before.mp4|C5-1440-dark-after.mp4|C5-1440-dark-diff0.png|C5-1440-dark-diffT.png|Unverified: unmatched details card|

Environment: T3 browser preview, responsive web, CSS1440×900 or390×900, light/dark, DPR2, default font scaling. Whole-surface wide video2880×1800 and preview still1280×800; narrow780×1800. Same immutable synthetic seed and frozen browser clock. Independent stills≥550ms apart settle exactly. Unmasked diffs highlight threshold0 and max-channel delta>16.

What else changed: A1 removes the bare predecessor and its timeline entry. Wide captures also show source-control card status from temporary baseline file swaps (Commit & push/+0−0 versus Commit/+20−9). That unrelated difference is not accepted as matched comparison proof; closed-card retakes remain incomplete. The continuous videos retain their original pixels and prove interactions with this difference disclosed. Offline peer proves sequencing and resumed transport, not real Claude summarization, restoration, billing, or parser acceptance.

Verification log

Tests45→45 in apps/web/src/components/ChatView.logic.test.ts; current base regression1 failed/44 passed, final45 passed. Scoped lint, format and web typecheck passed; final CI Build and Typecheck successful. Final tests.

Three fresh dual-review rounds returned MERGE/MERGE, no confirmed source defects; final merged-head review. Fixed anchored regex has constant work and no backtracking risk. CI29/29 successful on final f217759; GitCafe reports mergeable/current conflict check, no actionable bot findings.

Final proof audit: INSUFFICIENT; Final independent audit and row verdicts. Independent A1 rebuild sent only the instructed command and reached idle, but its two stills differed by509 pixels and failed temporal settling, so its pixel comparison is unverified. Capture index/bundle: Public artifact index · Reproducible fixture/evidence bundle. Earlier c218a80 SUFFICIENT audit does not certify this final merge head.

Unverified web cells: A1-1440-light, A1-1440-dark, C1-1440-light, C1-1440-dark, C2-1440-light, C5-1440-dark need matched settled-image pairs and regenerated diffs. No Electron/mobile native capture claimed; changed surface is web. Real Claude summaries/restoration and remote/tunnel behavior are outside the sequencing claim.

Models/harnesses: Claude Opus5.5 through Claude Code for tests, implementation, reviewerB; GPT-6.1-sol through Codex for reviewerA, capture and proof audit.

### Completed evidence supplement — final pinned head

VERDICT: SUFFICIENT. This append supersedes the historical “Proof incomplete”, “INSUFFICIENT”, “Unverified” wide-cell statuses, pending links, rejected old wide diffs and failed independent rebuild above, plus the index’s pending independent-audit status. Historical records remain unchanged; the old mismatched wide diffs remain rejected and are replaced by the matched pairs below.

Independent audit and all row verdicts · Audit manifest · Independent rebuild proof.

Consolidated evidence index: all stills, diffs and recordings · Consolidated matrix · Scripts, fixtures and captures bundle.

6/6 missing wide pairs complete; 6/6 accepted narrow cells and all 24 recordings reused unchanged; all 12 visual cells audited sufficient. L1/S1 retain prior accepted records, without fresh tests or source review. No unverified rows remain within the synthetic responsive-web sequencing scope. The auditor played all 24 recordings completely and checked their narrated steps against sanitized command/resume traces. Historical wide recordings prove sequencing only and retain their disclosed card mismatch; replacement stills establish matched visual parity. C5 stills show Never opt-out; reused recordings show restoration to When you return and the subsequent automatic-predecessor send.

The six new wide pairs run the entire base 4812dca (merge-base of final head) versus the entire exact head f217759. Reused 390px cells and recordings retain the disclosed changed-file baseline substitution method; they are not full-base runtime evidence.

New capture environment: Chromium 148.0.7778.96, Linux x86_64, 1440×900 CSS, DPR2, 2880×1800 PNG, desktop emulation, normal font scaling, en-US/UTC, reduced motion, frozen browser Date 2026-10-23T12:00Z, fonts loaded and network idle, matching scroll/sidebar/details states. All new sides settle exactly; old 390px cells are unchanged. Independent A1 wide-light head frames 1143ms apart have zero temporal differing pixels; rebuild versus delivered has 0 pixels >0, 0 pixels >16, maximum channel 0. No masks or pixel-difference waivers.

A1 removes the duplicate bare command/boundary, moves the instructed row up and changes the minimap only to reflect the shorter timeline. The other four new wide control pairs have zero differing pixels at threshold zero. No unrelated visual differences were found.

Before: bare compaction followed by instructed compaction
After: instructed compaction without the preceding bare compaction

Scope: offline synthetic peer proves actual web composer/server/Claude SDK command sequencing and resumed transport. It does not prove actual Claude summarization, transcript restoration, billing, parser internals, native desktop/mobile, remote or tunnel behavior; fixture notices, token counts and responses are synthetic. No new source review or tests are claimed by this evidence update.

Models/harness: GPT-6.1-sol through Codex for capture and independent proof audit.

fixfon and others added 7 commits October 16, 2026 16:27
… first

With the Compact chip on, sending `/compact <instructions>` queued a bare
`/compact` ahead of it, so the first compaction ran without the instructions
and the user paid for two. Compact-before-send now skips any `/compact`
command, with or without arguments.

Fixes #20222
… Compact chip is on

Compact-before-send matched only the exact text "/compact", so a typed
"/compact <instructions>" queued a bare compaction ahead of it. The
predicate now recognizes the command at a word boundary, case-insensitive,
and the regression test is reduced to the one case that proves it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Takeover tests for #20236: a stale Claude session still compacts before
ordinary messages and /compactfoo, but /compact with instructions or
whitespace is the only compaction.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The helper had one caller; keep the guard where the decision is made.

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:XS 0-9 changed lines (additions + deletions). labels Oct 23, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 8c1c6be

Macroscope's review found this PR approvable — This is a narrowly scoped web composer bug fix that prevents instructed /compact commands from triggering an unintended extra bare compaction. The production logic change is isolated and accompanied by focused tests for command boundaries and existing behavior.

No code changes detected at f217759. Prior analysis still applies.

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

@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
📥 Commits

Reviewing files that changed from the base of the PR and between 807319c and 8c1c6be.

📒 Files selected for processing: 2
  • apps/web/src/components/ChatView.logic.test.ts
  • apps/web/src/components/ChatView.logic.ts

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

📝 Walkthrough

The composer now skips pre-send compaction when a trimmed message starts with /compact followed by whitespace or the end of the message, regardless of case. Tests cover command variants and ordinary text.

Changes: Compact command handling

Layer / File(s) Summary
Detect compact commands
apps/web/src/components/ChatView.logic.ts, apps/web/src/components/ChatView.logic.test.ts
A case-insensitive pattern matches /compact followed by whitespace or the end of the message. compactBeforeSend uses the pattern, and tests cover matching commands and ordinary text.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested labels: bugfix, size:S

Suggested reviewers: t3dotgg, macroscopeapp

Merge Risk: ⚪ Minimal · up to 8c1c6

No actionable merge-blocking risk remains in the reviewed change.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Description check Warning The description states the problem (duplicate compaction when a resumed Claude thread sends /compact with instructions while the Compact chip is enabled) and the approach (treat /compact followed … 1. Add the Scope and approval link: reference the triaged bug issue or the maintainer discussion that approved this direction and scope, including the approval comment. Alternatively, explain why this qualifies as a very small, focused fix …
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title is concise, conventional, and clearly identifies the primary fix: instructed /compact commands no longer trigger an extra bare compaction.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description states the problem (duplicate compaction when a resumed Claude thread sends /compact with instructions while the Compact chip is enabled) and the approach (treat /compact followed by whitespace as an explicit request that bypasses automatic pre-send compaction). It gives validation results, an offline integrated proof with command traces, and a takeover/provenance section. Its Problem and Change content is clear. The template's Scope and approval section is not satisfied: it does not link a triaged bug issue or a maintainer-approved discussion, and it does not explain a small-fix exemption. It links PR #20236 as the original contribution but gives no approval comment. The Verification section is very long and partly contradictory. It starts with 'Proof incomplete', then adds a 'Completed evidence supplement' that declares SUFFICIENT and supersedes the earlier statuses. Many links point to unverifiable external artifacts. The description also includes unrelated-looking material, such as a source-control card difference and a long fixture matrix, which makes it hard to review. The template also asks for a model and harness attribution, and the description provides one.

Resolution

  1. Add the Scope and approval link: reference the triaged bug issue or the maintainer discussion that approved this direction and scope, including the approval comment. Alternatively, explain why this qualifies as a very small, focused fix of an obvious bug without a prior issue. 2. Consolidate the Verification section into one current account. Remove the contradictory 'Proof incomplete' and 'INSUFFICIENT' statements, or clearly separate them from the final state, so a reviewer sees one verdict. 3. State the exact tests run and their observed results for the final head in the Verification section, for example the 45 planner tests and the regression case, in one place. 4. Keep the description to one underlying problem. Move the unrelated source-control card observations out of the description or into a separate note. 5. Confirm that all linked evidence is accessible, and state what was not checked, such as native Electron and mobile runs. The template's model and harness attribution is already present; keep it.
✨ 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

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

@juliusmarminge juliusmarminge added pr:in-progress A lead is working on this PR bugfix Fix PR opened by an issue lead; enters the PR loop pr:ready Every gate passed; waits for Julius's land label labels Oct 23, 2026
@juliusmarminge
juliusmarminge merged commit 16aaf5b into main Oct 23, 2026
39 checks passed
@juliusmarminge
juliusmarminge deleted the takeover/20236-compact-instructions-r2 branch October 23, 2026 11:40
@juliusmarminge juliusmarminge removed pr:in-progress A lead is working on this PR pr:ready Every gate passed; waits for Julius's land label labels Oct 23, 2026
gitcafe-production Bot pushed a commit that referenced this pull request Oct 23, 2026
Keep the branch's case-sensitive instructed /compact predicate over main's
case-insensitive COMPACT_COMMAND_PATTERN (#24008): Claude reads mixed-case
/Compact with instructions as prose, so a stale session still compacts first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mvkvc added a commit to cloudloom-ai/t3code that referenced this pull request Oct 23, 2026
* refactor(web): timeline user message rows and context chips live in their own files (pingdotgg#22676)

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

* refactor(web): timeline assistant and orchestration event rows live in their own files (pingdotgg#22677)

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

* refactor(web): timeline row derivation, position restore and find reader live in hooks (pingdotgg#22682)

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

* refactor(web): the command palette's theme items live in their own file (pingdotgg#22679)

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

* refactor(web): the command palette's thread items come from their own hook (pingdotgg#22687)

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

* refactor(web): the command palette's project items and pure helpers live in their own files (pingdotgg#22699)

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

* refactor(web): the command palette's add-project views are components (pingdotgg#22707)

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

* feat(cli): start, message, and read threads from the terminal with t3 thread (pingdotgg#22732)

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

* refactor(web): composer attachment tiles live in their own component (pingdotgg#22689)

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

* refactor(web): resting image previews and queued attachments are their own components (pingdotgg#22719)

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

* refactor(web): composer mode controls and footer actions live in ComposerFooterControls (pingdotgg#22720)

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

* refactor(web): typing no longer re-renders the composer model picker (pingdotgg#22721)

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

* refactor(web): composer suggestion lists are built by useComposerMenuItems (pingdotgg#22722)

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

* refactor(web): the sidebar's thread rows live in their own file (pingdotgg#22696)

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

* refactor(web): sidebar list markers and draft rows live in their own files (pingdotgg#22729)

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

* feat(dev): first dev start seeds real data and warms deps (pingdotgg#22744)

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

* refactor(web): the pull requests column lives in its own component (pingdotgg#22671)

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

* refactor(web): the pull request header's crumbs, title editor and base branch live in their own components (pingdotgg#22672)

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

* refactor(web): the pull request header's actions live in their own components (pingdotgg#22702)

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

* refactor(web): the pull request detail loader lives in its own hook (pingdotgg#22703)

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

* refactor(web): the pull request list's rows read the speed-mode modifier themselves (pingdotgg#22704)

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

* refactor(web): the pull requests page's scope and grouping hooks live in their own module (pingdotgg#22705)

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

* refactor(web): the pull requests route only validates its search; the page lives under components (pingdotgg#22706)

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

* perf(web): Shift re-renders only each row's quick-action group (pingdotgg#22726)

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

* refactor(web): the pull request list's grouping helper lives in a logic module (pingdotgg#22727)

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

* refactor(web): chat markdown code blocks live in their own module (pingdotgg#22690)

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

* refactor(web): the Mermaid code block lives in its own component file (pingdotgg#22691)

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

* refactor(web): chat markdown tables and details live in their own components (pingdotgg#22692)

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

* refactor(web): chat markdown links and file chips live in their own modules (pingdotgg#22693)

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

* refactor(web): chat markdown images and videos live in their own module (pingdotgg#22694)

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

* refactor(web): ChatView's module-level helpers live in their own files (pingdotgg#22665)

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

* refactor(web): ChatView's persistent terminal drawers live in their own component (pingdotgg#22680)

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

* refactor(web): ChatView's right panel lives in its own component (pingdotgg#22700)

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

* refactor(web): ChatView's timeline follow and anchoring lives in useTimelineFollow (pingdotgg#22701)

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

* refactor(web): ChatView's machine and server-update banners live in useSystemComposerBanners (pingdotgg#22710)

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

* refactor(web): ChatView's subagent, goal, background-work and branch banners are built in ThreadActivityBanners (pingdotgg#22725)

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

* refactor(web): ChatView's draft machine routing lives in useDraftEnvironmentRouting (pingdotgg#22728)

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

* refactor(web): ChatView's send preparation is pure functions in ChatView.logic (pingdotgg#22734)

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

* refactor(web): the archived threads settings page lives in its own file (pingdotgg#22666)

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

* refactor(web): the typography settings section lives in its own file (pingdotgg#22667)

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

* refactor(web): the appearance settings page lives in its own file (pingdotgg#22668)

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

* refactor(web): the background activity setting and its dialog live in their own file (pingdotgg#22669)

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

* refactor(web): the connections page's pure helpers live in ConnectionsSettings.logic (pingdotgg#22683)

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

* refactor(web): authorized clients and endpoint rows live in their own file (pingdotgg#22684)

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

* refactor(web): saved and T3 Connect environment rows live in their own file (pingdotgg#22685)

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

* perf(server): skip the macOS xcrun git shim (pingdotgg#22759)

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

* docs(agents): read vendored .repos with git show when sparse-excluded (pingdotgg#22764)

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

* fix(web): ⌘Z undoes a settle even when the composer has focus (pingdotgg#22607)

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

* feat(scripts): one command checks what the branch changed (pingdotgg#22767)

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

* fix(scripts): check:changed no longer skips knip after a removed import (pingdotgg#22784)

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

* perf(dev): faster first load for shared dev servers (pingdotgg#22776)

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

* fix(server): stalled clones say "Stalled" instead of a frozen speed (pingdotgg#22780)

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

* fix(web): steers split a finished turn's work instead of stacking under it (pingdotgg#22783)

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

* fix(web): images on their own line no longer sit beside their label (pingdotgg#22787)

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

* fix(release): include pnpm hook in Vercel uploads (pingdotgg#22813)

* fix(release): keep Vercel warnings out of deployment URLs (pingdotgg#22817)

* fix(queue): send selected held messages when a thread is stopped (pingdotgg#22790)

* fix(server): delegated Claude children follow your subagent cache TTL setting (pingdotgg#22841)

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

* fix(server): t3 pair in a worktree no longer falls back to the live install (pingdotgg#22855)

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

* fix(server): avoid expensive diff minimization in status refreshes (pingdotgg#21872)

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

* fix(codex): keep every path of a multi-file patch (pingdotgg#22541)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>

* fix(gitlab): merge request diffs page 30 files at a time so GitLab 15.7 to 17.10 answer (pingdotgg#21909)

* fix(server): keep Antigravity question options and no-custom-answer flag in V2 (pingdotgg#22019)

* fix(server): commit prompts no longer repeat CLAUDE.md when it matches AGENTS.md (pingdotgg#22848)

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

* fix(mcp): point a bare thread uuid at its mcp: thread in thread_not_found (pingdotgg#22452)

* fix(opencode): out-of-funds failures show OpenCode's message instead of a usage limit (pingdotgg#22596)

* fix(shared): accept a pasted ChatGPT callback URL that is missing http:// (pingdotgg#21750)

* fix(server): the background service picks up JAVA_HOME from the login shell (pingdotgg#22856)

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

* fix(server): answered questions say "already answered" instead of "not found" (pingdotgg#22850)

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

* fix(desktop): an abandoned browser sign-in no longer blocks T3 Connect for 3 minutes (pingdotgg#22903)

On desktop, an abandoned browser sign-in blocked every T3 Connect sign-in for 3 minutes. A new attempt now replaces the stale Clerk flow, and a Cancel bar resets the sheet. Takeover of pingdotgg#22708.

Co-authored-by: steve-ai-vibe <steve.ai.vibe@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): agents get a short, current model list instead of a 55k-character catalog dump (pingdotgg#22889)

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

* docs(agents): proof for a bug fix depends on the bug (pingdotgg#23008)

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

* fix(server): removing a worktree on Windows no longer deletes what its junctions point to (pingdotgg#21099)

Co-authored-by: sheehanmunim <80079528+sheehanmunim@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(web): a streaming thread re-renders only its own sidebar row (pingdotgg#22730)

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

* refactor(web): the add environment dialog owns its form state (pingdotgg#22686)

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

* fix(desktop): use Clerk's upstream fix for abandoned browser sign-ins (pingdotgg#23038)

* feat: show automation messages as compact timeline rows (pingdotgg#22638)

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

* feat(server,web,mobile): approvals in full access say why Claude asked (pingdotgg#22546)

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

* feat(claude): idle compaction has a global default and per-instance overrides (pingdotgg#23037)

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

* perf(web): typing no longer re-renders the traits picker or attach button (pingdotgg#23040)

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

* refactor(web): the composer's layout and provider hooks live in their own files (pingdotgg#23042)

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

* refactor(web): the prompt stash lives in useComposerStash (pingdotgg#23046)

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

* refactor(web): composer context imports live in useComposerContextImport (pingdotgg#23048)

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

* refactor(web): composer file intake lives in useComposerAttachmentIntake (pingdotgg#23049)

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

* refactor(web): the composer's footer controls render in ComposerControlsBar (pingdotgg#23058)

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

* refactor(web): composer key handling lives in useComposerCommandKey (pingdotgg#23060)

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

* refactor(web): ChatView's send paths live in useComposerSend (pingdotgg#23062)

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

* refactor(web): ChatView's terminal actions live in useChatTerminalActions (pingdotgg#23063)

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

* refactor(web): ChatView's right panel actions live in useRightPanelActions (pingdotgg#23064)

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

* refactor(web): ChatView's snooze, settle, and checkout actions live in useThreadLifecycle (pingdotgg#23065)

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

* refactor(web): ChatView's revert, rollback, and fork live in useTimelineRewind (pingdotgg#23066)

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

* refactor(web): ChatView's attachment preview handoff lives in useAttachmentPreviewHandoff (pingdotgg#23067)

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

* refactor(web): ChatView's project clone banner lives in useProjectCloneBanner (pingdotgg#23068)

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

* refactor(web): ChatView's model, mode, and workspace choices live in useComposerSelection (pingdotgg#23069)

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

* refactor(web): ChatView's pull request checkout lives in usePullRequestDraftThread (pingdotgg#23070)

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

* refactor(web): ChatView's thread derivations are tested functions in ChatView.logic (pingdotgg#23071)

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

* refactor(web): ChatView's paste-to-focus, titlebar controls, and timeline overlays move out (pingdotgg#23072)

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

* fix(cursor): a closed-stream write in the Cursor SDK no longer stops the server (pingdotgg#22897)

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

* fix(server): Codex no longer offers a one-click update for installs it can't detect (pingdotgg#22504)

* fix(pi): declare properties on MCP tool schemas that omit them (pingdotgg#21822)

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

* fix(server): a desktop backend whose launcher died shuts down cleanly instead of crashing (pingdotgg#22471)

* fix(mobile): chat feed no longer re-derives on every render (pingdotgg#22913)

Co-authored-by: flamboh <oliver.boorstein@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(user): the outside agents guide says which addresses agents can sign in over (pingdotgg#22377)

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

* fix(server): HTML preview reports a browser start error instead of an internal error (pingdotgg#22895)

Co-authored-by: ScottN-PV <snorteman@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(tailscale): a timed-out tailscale probe no longer outlives its call (pingdotgg#22900)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(composer): queued messages follow the Follow-up behavior setting (pingdotgg#22857)

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

* fix(server): failed provider updates say why (pingdotgg#22506)

* test(telemetry): keep fixture PIDs from colliding with the test worker (pingdotgg#21446)

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

* fix(server): server tests resolve the macOS temp dir symlink (pingdotgg#21442)

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

* fix(scripts): mobile lint fails instead of passing when ktlint or detekt is missing (pingdotgg#22896)

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

* fix(server): t3_thread_read clamps oversized page sizes instead of failing (pingdotgg#22901)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: grey-tsosie <45133231+grey-tsosie@users.noreply.github.com>

* fix(mobile): opening a pull request no longer crashes with "Maximum update depth exceeded" (pingdotgg#22600)

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

* fix(web): PR Code tab keeps its files after a refresh with an unchanged diff (pingdotgg#22917)

Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): finished provider updates no longer leave a hidden spinner in the sidebar (pingdotgg#22912)

Co-authored-by: 1kuna <47035140+1kuna@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(composer): mentions of files like `posts.$postId.tsx` or `[id].tsx` stay chips (pingdotgg#22922)

Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(web): resuming an interrupted run lives in its own hook (pingdotgg#23087)

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

* refactor(web): proposed-plan follow-ups and implement-in-new-thread live in their own hooks (pingdotgg#23091)

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

* refactor(web): multiple-model sends live in their own hook (pingdotgg#23094)

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

* refactor(web): the composer send reads its own settings and draft instead of taking them from ChatView (pingdotgg#23095)

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

* refactor(web): ComposerControlsBar renders without a memo() wrapper (pingdotgg#23093)

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

* refactor(web): chat shortcuts live with the hooks that own their actions (pingdotgg#23097)

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

* refactor(web): ChatView's timeline banners render in ChatBannerLane (pingdotgg#23101)

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

* fix(web): the branch toolbar and thread details panel stay cached while a reply streams (pingdotgg#23103)

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

* fix(server): scheduled tasks no longer jump to the top when toggled (pingdotgg#22899)

Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Forgejo and GitCafe pull requests link to their threads again (pingdotgg#22937)

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

* fix(server): pushes the remote refuses say why instead of a generic failure (pingdotgg#22904)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(composer): typing a price no longer opens the skill menu (pingdotgg#21519)

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

* fix(web): thread details PR merge uses the last selected merge method (pingdotgg#22399)

* fix(web): a Usage toggle shortcut now goes back instead of staying on Usage (pingdotgg#22905)

Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): quote comment box stays on screen for long code lines (pingdotgg#22149)

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

* fix(web): right panel launcher letters open their surface instead of typing into the composer (pingdotgg#22898)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): ../ file links outside the workspace open as host files (pingdotgg#22853)

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

* fix(shared): recognize relative folder links with trailing slash (pingdotgg#22188)

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

* fix(client): usage limits skip disabled connections (pingdotgg#22936)

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

* fix(web): imported VS Code themes keep destructive buttons red (pingdotgg#21924)

* fix(shared): Azure DevOps repositories with a space in the name list their pull requests (pingdotgg#22782)

* fix(opencode): cancelled todos no longer keep the todo list running (pingdotgg#22938)

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

* fix(web): copy to machine clones the fork, not its upstream (pingdotgg#22492)

* fix(server): JetBrains IDEs open file links at the right column (pingdotgg#22826)

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

* fix(server): sync pull request draft status changes (pingdotgg#22832)

* test(web): chat shortcut test types through the composer handle (pingdotgg#23126)

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

* Merge commit from fork

A markdown image such as ![x](file://attacker.test/share/cat.jpg), or a raw
\\host\share path, was classified as a host file. Rendering it asked the
server for a signed asset URL, and the server's realpath on the resulting UNC
path made Windows open an SMB session and send the user's NetNTLMv2 response
to the attacker's host, with no click and no tool call. File-link chips did
the same through filesystem.getMetadata, which stats every absolute path, and
storage cleanup stats the store paths in a worktree's pnpm manifest, which an
agent can write.

Network paths (two leading separators, as Windows reads them: \\h, //h, /\h)
now only resolve inside the thread's project, so projects on a share keep
working:

- clients block them in markdown images and stop treating them as file links
- the web stops asking for their metadata
- the server refuses them for media assets and file reads outside the
  project, never stats one for metadata, and storage cleanup ignores a pnpm
  manifest that names one
- each check hands the filesystem the resolved path it approved, since
  Windows reads a `\\?\` path as written, `..` included

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

* fix(source-control): merge messages drop Claude Code's current claude.com footer (pingdotgg#23133)

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

* fix(build): pin Node 26.12.1 for development and standalone releases (pingdotgg#23165)

* fix(mobile): keep Duo toolbar actions clear of workspace tabs (pingdotgg#22976)

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

* fix(mobile): respect Duo safe areas in overlays (pingdotgg#22977)

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

* fix(mobile): retain resting scroll offsets through Duo inset changes (pingdotgg#22978)

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

* fix(mobile): deliver the first tab selection after Duo folding (pingdotgg#22979)

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

* fix(mobile): use native full-width sheets on iPhone Duo (pingdotgg#22980)

Co-authored-by: Pixel Perfect <me@pixp.cc>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): the pull requests tab's empty detail asks for a pull request (pingdotgg#23143)

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

* fix(mobile): the iPhone Duo keeps list titles through folds and unfolds with its sidebar (pingdotgg#23144)

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

* fix(mobile): the iPhone Duo searches from a field at the bottom of its list (pingdotgg#23145)

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

* fix(mobile): a closed search no longer risks freezing the app (pingdotgg#23146)

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

* fix(mobile): folding the Duo keeps the thread's end or the reader's line in place (pingdotgg#23147)

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

* fix(mobile): the iPhone Duo's search field and composer line up with its tab bar (pingdotgg#23148)

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

* fix(mobile): Screens 5.0.0-t3.36 stops an iPhone Duo unfold crash (pingdotgg#23149)

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

* fix(mobile): the iPhone Duo's inspector panes use the full column (pingdotgg#23150)

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

* fix(gitcafe): show line counts on linked and listed pull requests (pingdotgg#22633)

* docs(import): correct conversation size and batch limits (pingdotgg#23226)

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

* fix(server): stop abandoned turns before continuing threads (pingdotgg#23169)

* feat(server): export how long runs take and how they end (pingdotgg#22094)

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

* fix(mobile): new-thread heading clears the iPad header (pingdotgg#23206)

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

* fix(pi): fork completed turns while the next turn is running (pingdotgg#23052)

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

* fix(mobile): drafts swipe to discard and every row move animates (pingdotgg#23205)

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

* feat(server): webhook filters fan out over arrays with a [] path wildcard (pingdotgg#23282)

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

* fix(web): Arabic and Hebrew text reads and navigates right to left (pingdotgg#22777)

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

* fix(client-runtime): refresh Git refs when the RPC session changes (pingdotgg#23314)

* fix(web): cap list layout passes to prevent React error 185 (pingdotgg#23315)

* fix(mobile): align iPad composer without shifting on keyboard focus (pingdotgg#23355)

* feat(gitcafe): request reviewers and apply labels on GitCafe pull requests (pingdotgg#23034)

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

* fix(source-control): clones retry over HTTPS when the SSH key is refused (pingdotgg#23170)

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

* fix(mobile): the iOS composer reopens where you left a long draft (pingdotgg#23096)

Co-authored-by: Vishal <vishalprashantdoshi@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Vishal Doshi <vdoshi96@users.noreply.github.com>

* fix(mobile): preserve new-thread drafts and native header layout (pingdotgg#23366)

* feat: ChatGPT Business usage limits offer a copyable admin request (pingdotgg#23361)

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

* fix(web): paused sidebar videos stop reloading after every command (pingdotgg#23106)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Nikita Maximilian Grimm <github@nikitagrimm.de>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* chore(typecheck): typescript is the tsc-rs drop-in, no effect-tsgo patch (pingdotgg#23023)

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

* fix(mobile): Dynamic Island status no longer wraps next to other Live Activities (pingdotgg#23327)

Fixes pingdotgg#15682. Takes over pingdotgg#23035.

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

* perf(web): streamed reply text no longer re-renders ChatView (pingdotgg#23117)

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

* perf(web): visit marks during a reply no longer re-render ChatView (pingdotgg#23124)

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

* fix(server): a Claude agent stops when the server that started it dies (pingdotgg#23389)

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

* fix(server): SSH hosts no longer keep every old 300 MB runtime after desktop updates (pingdotgg#23113)

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

* fix(settings): older clients connect again after idle compaction modes (pingdotgg#23454)

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

* fix(mobile): unify draft and thread navigation and composer behavior (pingdotgg#23467)

* ci: setup survives npm registry outages (pingdotgg#23582)

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

* feat(web,mobile): messages from other agents fold into one-line rows (pingdotgg#23135)

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

* fix(web): subagent bar keeps model and status readable in narrow chat columns (pingdotgg#23502)

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

* fix(chat): mark tool images beyond the preview limit (pingdotgg#23595)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>

* fix(web): provider updates no longer pop toasts on launch (pingdotgg#23233)

* fix(server): probe the Windows startup environment asynchronously (pingdotgg#21720)

* fix(usage): count initial Codex requests with inherited totals (pingdotgg#23729)

* chore(mobile): bump app version to 2.1.0

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

* fix(web): let toast content use the full accordion width (pingdotgg#23777)

* fix(web): sidebar follows the active thread after history navigation (pingdotgg#23519)

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

* fix(server): keep subagent transcript updates off shell stream (pingdotgg#23783)

* fix(deps): pin all patched package versions (pingdotgg#23798)

* docs: document the GitCafe mirror and refresh the dev setup (pingdotgg#23808)

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

* fix: no more em dashes in product copy (pingdotgg#23799)

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

* chore(release): prepare v0.1.2

* chore(mobile): bump Clerk Expo SDKs to the new native client sync (pingdotgg#23047)

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

* fix(mobile): capture folded and unfolded Duo store screenshots (pingdotgg#23849)

* fix(server): preserve typed requirements as the RPC group grows (pingdotgg#23813)

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

* fix(server): wake PR watches when no checks report (pingdotgg#23863)

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

* fix(server): resume Codex parents after native children finish (pingdotgg#23840)

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

* fix(gitcafe): authored lists, merge progress, and author reviews match git.cafe (pingdotgg#23887)

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

* fix(forgejo): merges follow the repository's delete-branch setting (pingdotgg#23471)

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

* fix(web): keep PR check counts in sync (pingdotgg#23548)

* fix(server): speed up shell snapshots on large databases (pingdotgg#23751)

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

* fix(server): keep managed Codex token renewal in the server (pingdotgg#21786)

* fix(server): renew active managed Codex turns through native auth (pingdotgg#21787)

* feat(web): telemetry export settings show where the running endpoint came from (pingdotgg#23713)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* fix(ui): preserve tool icon detail in light mode (pingdotgg#23896)

* fix(mcp): accept GitCafe pull request URLs in link/unlink/watch tools (pingdotgg#23899)

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

* feat(settings): add thread title instructions (pingdotgg#21882)

Co-authored-by: Yash Singh <saiansh2525@gmail.com>

* fix(mobile): undo toasts keep their action on one row (pingdotgg#23910)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(connect): correct the relay webhook endpoint key (pingdotgg#23526)

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

* fix(mobile): center Android composer text and pad wrapped drafts (pingdotgg#23829)

* fix(server): wake PR watches when remaining CI checks finish (pingdotgg#23904)

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

* fix(mobile): the empty composer row shows only the provider icon (pingdotgg#23570)

* fix(server): route SQLite reads around writer contention (pingdotgg#23902)

* fix(claude): route approval feedback to the requesting agent (pingdotgg#23657)

* fix(web): align pull request file counts with diff stats (pingdotgg#23905)

* fix(web): task durations over an hour no longer wrap in the tasks panel (pingdotgg#13472)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): preserve Codex sign-in guidance in usage notices (pingdotgg#17055)

Co-authored-by: Codex (gpt-6-astra) <noreply@openai.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>

* fix(server): restore Claude subscription usage through proxies (pingdotgg#12069)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>

* fix(server): Forgejo skipped jobs no longer keep a pull request watch pending (pingdotgg#16668)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* fix(mobile): move Android undo toasts above bottom navigation (pingdotgg#23928)

* perf(server): skip unused Git output line parsing (pingdotgg#23953)

Co-authored-by: Jet <jet@extremist.software>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* fix(server): abort interrupted ACP MCP fetches (pingdotgg#23955)

Co-authored-by: kiiwee <6160452+kiiwee@users.noreply.github.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* fix(web): new threads no longer hang when a project's machine is offline (pingdotgg#23967)

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

* fix(pi): stop blank input placeholders from failing the run (pingdotgg#23235)

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

* fix(cursor): fail turns that end in a transport error after commentary (pingdotgg#23273)

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

* test(forgejo): answer the base branch read in the skipped-checks test (pingdotgg#23952)

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

* fix(opencode): retry failed model catalogs until they recover (pingdotgg#23939)

* fix(server): avoid full shell read on resume (pingdotgg#23987)

* test: delete low-value tests and dead test-only exports (pingdotgg#24058)

* test(server): restore DST scheduling tests deleted in the test snap (pingdotgg#23991)

* test(web): restore project settings permission tests deleted in the test snap (pingdotgg#24011)

* test(mobile): restore clipboard secret-redaction test deleted in the test snap (pingdotgg#23980)

* fix(web): Cmd+B toggles the sidebar unless text is selected (pingdotgg#24063)

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

* fix(server): agent-browser and Chrome no longer outlive the agent that started them (pingdotgg#21299)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Theo Browne <me@theo.li>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* test(client-runtime): restore render scheduler tests deleted in the test snap (pingdotgg#23977)

* fix(web): cmd+k search hides subagents and favors recent, whole-word matches (pingdotgg#24032)

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

* test(lint): new polling loops in tests now fail lint (pingdotgg#23983)

* ci: unused dependency patches fail in check:changed, not after push (pingdotgg#23988)

* fix(desktop): PDFs in the preview can be annotated (pingdotgg#24022)

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

* fix(web): instructed compact runs without a bare compaction first (pingdotgg#24008)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* fix(desktop): reduce app crashes when a preview tab's renderer dies during agent screenshots (pingdotgg#24056)

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

* fix(server): Stop stops a thread's subagents again (pingdotgg#23886)

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

* fix(desktop): a stuck quit no longer leaves the app unkillable (pingdotgg#23873)

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

---------

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: ishaanko <ishaanko.mail@gmail.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Igor Makowski <56691628+Mnigos@users.noreply.github.com>
Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: project516 <138796702+Project516@users.noreply.github.com>
Co-authored-by: steve-ai-vibe <steve.ai.vibe@gmail.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: sheehanmunim <80079528+sheehanmunim@users.noreply.github.com>
Co-authored-by: Robert Soriano <sorianorobertc@gmail.com>
Co-authored-by: MarMarLabs <marmar9615@icloud.com>
Co-authored-by: Koushik_xd <122906171+koushikxd@users.noreply.github.com>
Co-authored-by: Taissa <202353633+tlconde@users.noreply.github.com>
Co-authored-by: flamboh <oliver.boorstein@gmail.com>
Co-authored-by: Gourav Kumar Dhiman <gkrdhiman@gmail.com>
Co-authored-by: ScottN-PV <snorteman@gmail.com>
Co-authored-by: tatsuaki watanabe <tatsuaki.w@gmail.com>
Co-authored-by: Shubh <shubh@shubhxho.com>
Co-authored-by: grey-tsosie <45133231+grey-tsosie@users.noreply.github.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: 1kuna <47035140+1kuna@users.noreply.github.com>
Co-authored-by: MarcoDotIO <Marcus.Arnett10@gmail.com>
Co-authored-by: Tristan Knight <admin@snappeh.com>
Co-authored-by: Etan Heyman <93338119+EtanHey@users.noreply.github.com>
Co-authored-by: maco <gosarmarcel7@gmail.com>
Co-authored-by: macodev00 <macodev00@users.noreply.github.com>
Co-authored-by: M4NU5 <31220123+M4NU5@users.noreply.github.com>
Co-authored-by: Louis Gollut <louis.gollut@proton.me>
Co-authored-by: Pavel Kroupa <63880977+Tabonx@users.noreply.github.com>
Co-authored-by: AKolenda <akole779@mtroyal.ca>
Co-authored-by: Lev Poznyakov <62802017+levochkaa@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: يزن حمزه <yznhamzeh@gmail.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Vishal <vishalprashantdoshi@gmail.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Vishal Doshi <vdoshi96@users.noreply.github.com>
Co-authored-by: Nikita Maximilian Grimm <github@nikitagrimm.de>
Co-authored-by: Taylor Dolezal <onlydole@users.noreply.github.com>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Caden Elrod <76628548+CadenEl@users.noreply.github.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: James Villarrubia <8172873+jamesvillarrubia@users.noreply.github.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: 洁月星 <jieyuexing@outlook.com>
Co-authored-by: Nand <nand@rizvanolli.com>
Co-authored-by: Jet <jet@extremist.software>
Co-authored-by: kiiwee <6160452+kiiwee@users.noreply.github.com>
Co-authored-by: Joseph Vidal <135430578+josephv123@users.noreply.github.com>
Co-authored-by: Theo Browne <me@theo.li>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 23, 2026
## What's Changed
* fix(server): avoid full shell read on resume by @Yash-Singh1 in pingdotgg/t3code#23987
* test: delete low-value tests and dead test-only exports by @t3dotgg in pingdotgg/t3code#24058
* test(server): restore DST scheduling tests deleted in the test snap by @t3dotgg in pingdotgg/t3code#23991
* test(web): restore project settings permission tests deleted in the test snap by @t3dotgg in pingdotgg/t3code#24011
* test(mobile): restore clipboard secret-redaction test deleted in the test snap by @t3dotgg in pingdotgg/t3code#23980
* fix(web): Cmd+B toggles the sidebar unless text is selected by @t3dotgg in pingdotgg/t3code#24063
* fix(server): agent-browser and Chrome no longer outlive the agent that started them by @josephv123 in pingdotgg/t3code#21299
* test(client-runtime): restore render scheduler tests deleted in the test snap by @t3dotgg in pingdotgg/t3code#23977
* fix(web): cmd+k search hides subagents and favors recent, whole-word matches by @t3dotgg in pingdotgg/t3code#24032
* test(lint): new polling loops in tests now fail lint by @t3dotgg in pingdotgg/t3code#23983
* ci: unused dependency patches fail in check:changed, not after push by @t3dotgg in pingdotgg/t3code#23988
* fix(desktop): PDFs in the preview can be annotated by @shivamhwp in pingdotgg/t3code#24022
* fix(web): instructed compact runs without a bare compaction first by @juliusmarminge in pingdotgg/t3code#24008
* fix(desktop): reduce app crashes when a preview tab's renderer dies during agent screenshots by @shivamhwp in pingdotgg/t3code#24056
* fix(server): Stop stops a thread's subagents again by @shivamhwp in pingdotgg/t3code#23886
* fix(desktop): a stuck quit no longer leaves the app unkillable by @shivamhwp in pingdotgg/t3code#23873
* fix(web): keep blockquote text readable in every theme by @Yash-Singh1 in pingdotgg/t3code#24036
* fix(bitbucket): stop the startup sweep from flooding Bitbucket with 429s by @shivamhwp in pingdotgg/t3code#23889
* fix(web): screen readers hear when the open thread starts, needs you or finishes by @shivamhwp in pingdotgg/t3code#23752
* perf(web): reduce allocations in streaming timeline scans by @UtkarshUsername in pingdotgg/t3code#23739
* perf(web): reuse a collator when sorting changed-file trees by @UtkarshUsername in pingdotgg/t3code#23776
* perf(scripts): check:changed finishes in about 10 s by @t3dotgg in pingdotgg/t3code#23581


**Full Changelog**: pingdotgg/t3code@v0.1.3-nightly.20261023.3566...v0.1.3-nightly.20261023.3579

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.3-nightly.20261023.3579
Pipyakas pushed a commit to Pipyakas/t3code that referenced this pull request Oct 23, 2026
…ngdotgg#24008)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 16aaf5b)
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 size:XS 0-9 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.

2 participants