Skip to content

fix(web): a snoozed thread wakes in the open chat view - #21019

Merged
juliusmarminge merged 1 commit into
mainfrom
fix/chatview-snooze-clock
Oct 17, 2026
Merged

juliusmarminge merged 1 commit into
mainfrom
fix/chatview-snooze-clock

Conversation

@juliusmarminge

Copy link
Copy Markdown
Member

With a snoozed thread open, the "Snoozed" status line didn't switch to "Woke from snooze" at the wake time, and the wake timer re-fired every 50 ms until something else changed the thread.

The React Compiler caches ChatView's effectiveSnoozed(shell, { now: new Date() }) and threadWokeAt(...) results on the thread shell and supportsSnooze, so the clock read during render froze. The timer's tick only re-ran the effect. The cached check still said "snoozed", so the timer re-armed with the 50 ms minimum, over and over. I confirmed this by compiling ChatView.tsx and reading the cache guards on those two expressions.

The snooze clock is now state. It resets when the shell changes and advances when the wake timer fires, so both checks re-run with a real time. The compiled output now guards them on snoozeClock.

The mobile thread list had the same bug (#20967, found by the on-device render counter in #21001).

Checks: lint and typecheck on ChatView.tsx, and reactCompilerCoverage for ChatView.tsx. No test covers the snooze status line, and I haven't checked it in a browser.

Claude Opus 5.5 via Claude Code.

🤖 Generated with Claude Code

The React Compiler caches ChatView's snooze check on the thread shell, so the
clock read during render froze. When the wake timer fired, the cached result
still said snoozed and the timer re-armed every 50ms until the shell changed.
The snooze clock is now state, reset with the shell and moved by the timer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. label Oct 17, 2026
@juliusmarminge juliusmarminge added the macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews label Oct 17, 2026
@github-actions github-actions Bot added the size:S 10-29 changed lines (additions + deletions). label Oct 17, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 1a9e5e0

Macroscope's review found this PR approvable — This is a focused one-file bug fix that makes the existing snooze wake timer update the clock used by the open chat view, so status transitions occur without repeatedly rearming the timer. It introduces no schema, deployment, default, or broader product behavior changes.

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

@juliusmarminge
juliusmarminge merged commit 07cb902 into main Oct 17, 2026
32 of 33 checks passed
@juliusmarminge
juliusmarminge deleted the fix/chatview-snooze-clock branch October 17, 2026 22:16
Pipyakas pushed a commit to Pipyakas/t3code that referenced this pull request Oct 18, 2026
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 07cb902)
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 18, 2026
## What's Changed
* fix(web): a snoozed thread wakes in the open chat view by @juliusmarminge in pingdotgg/t3code#21019
* fix(web): time-based labels update under the React Compiler by @juliusmarminge in pingdotgg/t3code#21026
* test(web): the right panel Escape test waits for focus to return by @juliusmarminge in pingdotgg/t3code#21030
* fix(web): table expand button only shows when a cell is cut off by @shivamhwp in pingdotgg/t3code#19782


**Full Changelog**: pingdotgg/t3code@v0.1.1-nightly.20261017.3272...v0.1.1-nightly.20261018.3285

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.1-nightly.20261018.3285
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 18, 2026
## What's Changed
* fix(web): a snoozed thread wakes in the open chat view by @juliusmarminge in pingdotgg/t3code#21019
* fix(web): time-based labels update under the React Compiler by @juliusmarminge in pingdotgg/t3code#21026
* test(web): the right panel Escape test waits for focus to return by @juliusmarminge in pingdotgg/t3code#21030
* fix(web): table expand button only shows when a cell is cut off by @shivamhwp in pingdotgg/t3code#19782


**Full Changelog**: pingdotgg/t3code@v0.1.1-nightly.20261017.3272...v0.1.1-nightly.20261018.3285

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.1-nightly.20261018.3285
joaoheusi added a commit to joaoheusi/t3code that referenced this pull request Oct 18, 2026
* perf(web): the new-thread link route compiles without manual memoization (pingdotgg#20597)

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

* perf(web): the Electron browser host compiles with the React Compiler (pingdotgg#20548)

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

* perf(web): the CSV table preview compiles without manual memoization (pingdotgg#20680)

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

* perf(web): the thread lineage panel compiles without manual memoization (pingdotgg#20720)

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

* perf(web): the open panel pull request URL hook compiles without manual memoization (pingdotgg#20679)

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

* perf(web): highlighted code tokens compile without manual memoization (pingdotgg#20678)

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

* perf(web): scoped settings hooks compile without manual memoization (pingdotgg#20677)

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

* perf(web): the HTML document frame compiles without manual memoization (pingdotgg#20676)

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

* perf(web): the new project hook compiles without manual memoization (pingdotgg#20675)

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

* perf(web): the scratch project hook compiles without manual memoization (pingdotgg#20673)

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

* perf(web): the expanded image dialog compiles without manual memoization (pingdotgg#20672)

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

* perf(web): the sidebar project groups hook compiles without manual memoization (pingdotgg#20671)

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

* perf(web): review file patches compile without manual memoization (pingdotgg#20670)

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

* perf(web): the draft hero headline compiles without manual memoization (pingdotgg#20669)

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

* perf(web): settings project groups compile without manual memoization (pingdotgg#20668)

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

* perf(web): the chat route layout compiles without manual memoization (pingdotgg#20667)

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

* perf(web): scoped model availability compiles without manual memoization (pingdotgg#20666)

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

* perf(web): the environment hooks compile without manual memoization (pingdotgg#20665)

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

* perf(web): the provider settings panel compiles with the React Compiler (pingdotgg#20664)

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

* perf(web): the code block language picker compiles without manual memoization (pingdotgg#20663)

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

* perf(web): the right panel tabs compile with the React Compiler (pingdotgg#20662)

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

* perf(web): settings search availability compiles without manual memoization (pingdotgg#20661)

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

* perf(web): the editor preference hooks compile without manual memoization (pingdotgg#20660)

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

* perf(web): the code view file reveal hook compiles without manual memoization (pingdotgg#20659)

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

* perf(web): the command output panel compiles without manual memoization (pingdotgg#20658)

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

* perf(web): the annotatable diff view compiles without manual memoization (pingdotgg#20657)

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

* perf(web): the chat header compiles with the React Compiler (pingdotgg#20656)

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

* perf(web): the theme library compiles with the React Compiler (pingdotgg#20655)

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

* perf(web): the chat canvas compiles without manual memoization (pingdotgg#20654)

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

* perf(web): useResizableWidth compiles without manual memoization (pingdotgg#20653)

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

* perf(web): device controls compile without manual memoization (pingdotgg#20652)

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

* perf(web): file breadcrumbs compile with the React Compiler (pingdotgg#20651)

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

* perf(web): the changed files tree compiles without manual memoization (pingdotgg#20650)

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

* perf(web): the provider update dismissal hook compiles without manual memoization (pingdotgg#20649)

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

* perf(web): the sidebar primitives compile with the React Compiler (pingdotgg#20648)

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

* perf(web): the settings layout compiles without manual memoization (pingdotgg#20647)

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

* perf(web): the remote open hook compiles without manual memoization (pingdotgg#20646)

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

* perf(web): usePreviewBridge compiles with the React Compiler (pingdotgg#20644)

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

* perf(web): the citation chip compiles without manual memoization (pingdotgg#20643)

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

* perf(web): useHtmlRenderTheme compiles without manual memoization (pingdotgg#20642)

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

* perf(web): project content search compiles with the React Compiler (pingdotgg#20641)

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

* perf(web): the agent connect surface compiles without manual memoization (pingdotgg#20639)

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

* perf(web): the theme editor host compiles without manual memoization (pingdotgg#20638)

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

* perf(web): the first-run gate compiles with the React Compiler (pingdotgg#20637)

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

* perf(web): the settings scope context compiles without manual memoization (pingdotgg#20635)

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

* perf(web): the worktree base branch picker compiles without manual memoization (pingdotgg#20634)

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

* perf(web): the project file scripts hook compiles without manual memoization (pingdotgg#20632)

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

* perf(web): the diff file tree compiles with the React Compiler (pingdotgg#20631)

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

* perf(web): thread status indicators compile without manual memoization (pingdotgg#20630)

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

* perf(web): useMediaQuery compiles without manual memoization (pingdotgg#20629)

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

* perf(web): the source control settings compile with the React Compiler (pingdotgg#20628)

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

* perf(web): scheduled task settings compile without manual memoization (pingdotgg#20627)

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

* perf(web): the remove-cloned-project hook compiles without manual memoization (pingdotgg#20626)

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

* perf(web): resource telemetry diagnostics compile without manual memoization (pingdotgg#20625)

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

* perf(web): the archived threads hook compiles without manual memoization (pingdotgg#20624)

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

* perf(web): the Connect onboarding dialog compiles with the React Compiler (pingdotgg#20622)

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

* perf(web): redacted sensitive text compiles without manual memoization (pingdotgg#20621)

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

* perf(web): the pull request stack hook compiles without manual memoization (pingdotgg#20620)

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

* perf(web): the resource telemetry hook compiles without manual memoization (pingdotgg#20619)

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

* perf(web): the provider settings form compiles without manual memoization (pingdotgg#20618)

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

* perf(web): the provider models section compiles with the React Compiler (pingdotgg#20617)

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

* perf(web): the CLI authorize surface compiles without manual memoization (pingdotgg#20616)

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

* perf(web): the pull request thread dialog compiles without manual memoization (pingdotgg#20615)

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

* perf(web): the assistant citation target hook compiles with the React Compiler (pingdotgg#20614)

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

* perf(web): the device state hooks compile without manual memoization (pingdotgg#20613)

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

* perf(web): the provider accent color picker compiles without manual memoization (pingdotgg#20612)

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

* perf(web): the T3 Connect account pages hook compiles without manual memoization (pingdotgg#20611)

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

* perf(web): the session scope hooks compile without manual memoization (pingdotgg#20610)

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

* perf(web): the provider update notification compiles without manual memoization (pingdotgg#20609)

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

* perf(web): the open-source notices panel compiles with the React Compiler (pingdotgg#20608)

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

* perf(web): the project icon picker compiles without manual memoization (pingdotgg#20607)

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

* perf(web): the project scans hook compiles without manual memoization (pingdotgg#20606)

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

* perf(web): the thread context drop hook compiles with the React Compiler (pingdotgg#20605)

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

* perf(web): the local provider update groups compile without manual memoization (pingdotgg#20604)

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

* perf(web): thread find navigation compiles without manual memoization (pingdotgg#20603)

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

* perf(web): the font previews compile with the React Compiler (pingdotgg#20601)

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

* perf(web): project actions settings compile without manual memoization (pingdotgg#20602)

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

* perf(web): the thread find bar compiles with the React Compiler (pingdotgg#20600)

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

* perf(web): the project scripts control compiles without manual memoization (pingdotgg#20599)

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

* perf(web): keybindings settings compile without manual memoization (pingdotgg#20598)

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

* perf(web): the model picker sidebar compiles with the React Compiler (pingdotgg#20596)

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

* perf(web): the composer path search hook compiles without manual memoization (pingdotgg#20595)

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

* perf(web): the font picker compiles with the React Compiler (pingdotgg#20594)

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

* perf(web): the project clone toasts compile without manual memoization (pingdotgg#20593)

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

* perf(web): the pending user input panel compiles with the React Compiler (pingdotgg#20592)

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

* perf(web): useTurnDiffSummaries compiles without manual memoization (pingdotgg#20591)

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

* perf(web): the provider update pill compiles with the React Compiler (pingdotgg#20590)

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

* perf(web): the no-projects hero compiles without manual memoization (pingdotgg#20589)

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

* perf(web): useActiveThreadRef compiles without manual memoization (pingdotgg#20588)

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

* perf(web): the custom model editor compiles without manual memoization (pingdotgg#20586)

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

* perf(web): the root route compiles with the React Compiler (pingdotgg#20585)

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

* perf(web): the diff worker pool provider compiles without manual memoization (pingdotgg#20584)

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

* perf(web): the CLI command settings row compiles without manual memoization (pingdotgg#20583)

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

* perf(web): the composer banner stack compiles with the React Compiler (pingdotgg#20582)

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

* perf(web): the primary session state hook compiles without manual memoization (pingdotgg#20581)

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

* perf(web): the index route compiles with the React Compiler (pingdotgg#20580)

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

* perf(web): the command palette results compile without manual memoization (pingdotgg#20579)

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

* perf(web): the add provider dialog compiles without manual memoization (pingdotgg#20578)

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

* perf(web): useOrchestrationCommand compiles without manual memoization (pingdotgg#20576)

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

* perf(web): the environment selector compiles without manual memoization (pingdotgg#20575)

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

* perf(web): default theme adoption compiles with the React Compiler (pingdotgg#20574)

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

* perf(web): useAtomQueryRunner compiles without manual memoization (pingdotgg#20573)

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

* perf(web): the env mode selector compiles without manual memoization (pingdotgg#20572)

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

* perf(web): highlighted search lines compile without manual memoization (pingdotgg#20571)

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

* perf(web): the server update banner compiles without manual memoization (pingdotgg#20570)

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

* perf(web): the app sidebar layout compiles with the React Compiler (pingdotgg#20569)

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

* perf(web): useAtomCommand compiles without manual memoization (pingdotgg#20568)

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

* perf(web): the branch toolbar selector compiles without manual memoization (pingdotgg#20567)

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

* perf(web): the composer state hooks compile without manual memoization (pingdotgg#20566)

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

* perf(web): the escape-to-go-back hook compiles without manual memoization (pingdotgg#20564)

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

* perf(web): the guide tour compiles without manual memoization (pingdotgg#20563)

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

* perf(web): the onboarding completion hook compiles without manual memoization (pingdotgg#20561)

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

* perf(web): the guide stop compiles without manual memoization (pingdotgg#20560)

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

* perf(web): the prompt link page compiles with the React Compiler (pingdotgg#20559)

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

* perf(web): the hosted browser webview compiles with the React Compiler (pingdotgg#20558)

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

* perf(web): the branch picker compiles without manual memoization (pingdotgg#20557)

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

* perf(web): useStableCallback compiles without manual memoization (pingdotgg#20556)

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

* perf(web): the find reveal ref compiles without manual memoization (pingdotgg#20555)

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

* perf(web): the primary cloud link hook compiles without manual memoization (pingdotgg#20554)

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

* perf(web): the project action editor resets its form without an effect (pingdotgg#20550)

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

* perf(web): the zoomable image compiles without manual memoization (pingdotgg#20549)

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

* perf(web): the PR guide diff loader compiles with the React Compiler (pingdotgg#20543)

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

* perf(web): the traits picker compiles without manual memoization (pingdotgg#20540)

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

* perf(web): the managed relay hooks compile without manual memoization (pingdotgg#20552)

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

* perf(web): the guide excerpt compiles without manual memoization (pingdotgg#20553)

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

* perf(web): AnimatedHeight compiles with the React Compiler (pingdotgg#20562)

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

* perf(web): the browser favicon store compiles without manual memoization (pingdotgg#20546)

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

* perf(web): the browser surface slot compiles with the React Compiler (pingdotgg#20542)

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

* perf(web): the link opener hook compiles without manual memoization (pingdotgg#20541)

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

* perf(web): the guide file diff compiles without manual memoization (pingdotgg#20544)

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

* perf(web): the settings sidebar compiles with the React Compiler (pingdotgg#20623)

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

* perf(web): Codex setup compiles with the React Compiler (pingdotgg#20674)

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

* perf(web): chat markdown compiles with the React Compiler (pingdotgg#20715)

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

* perf(web): the device stream view compiles without manual memoization (pingdotgg#20645)

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

* perf(web): the load-balancing hook compiles with the React Compiler (pingdotgg#20565)

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

* fix(web): settings search keeps the clamped highlight when results shrink (pingdotgg#20764)

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

* perf(web): the provider update launch notification compiles with the React Compiler (pingdotgg#20577)

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

* perf(web): the model picker compiles without manual memoization (pingdotgg#20706)

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

* feat(web): step reasoning effort from the keyboard (pingdotgg#19928)

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

* perf(web): the item inspector compiles without manual memoization (pingdotgg#20545)

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

* fix(mobile): dev pairing link no longer opens Home inside a sheet (pingdotgg#20130)

* fix(server): webhook request values reach the agent marked as request data (pingdotgg#20447)

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

* refactor(client-runtime): decide learned routes and session reuse in one place (pingdotgg#20445)

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

* refactor(web): thread find compiles under the strict React Compiler rules (pingdotgg#20772)

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

* test(web): chat markdown, timeline, and diff reveal tests pass the strict compiler rules (pingdotgg#20770)

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

* perf(web): Git actions control compiles without manual memoization (pingdotgg#20777)

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

* refactor(web): the theme search section compiles without manual memoization (pingdotgg#20778)

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

* fix(server): keep sensitive values out of settings reads, startup logs and preview snapshots (pingdotgg#20446)

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

* refactor(web): the thread pull requests panel keeps its caching without "use memo" hooks (pingdotgg#20740)

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

* refactor(web): scoped settings stay cached without "use memo" (pingdotgg#20767)

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

* refactor(web): settings search items stay cached without "use memo" (pingdotgg#20771)

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

* refactor(web): the file browser keeps its caching without "use memo" hooks (pingdotgg#20784)

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

* refactor(web): the pull request stack hook keeps its caching without "use memo" (pingdotgg#20741)

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

* refactor(web): the pull request thread dialog keeps its caching without "use memo" hooks (pingdotgg#20742)

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

* refactor(web): the MCP app frame keeps its caching without "use memo" hooks (pingdotgg#20759)

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

* refactor(web): the changed files tree keeps its caching without "use memo" hooks (pingdotgg#20766)

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

* refactor(web): sidebar resize options stay cached without "use memo" (pingdotgg#20776)

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

* refactor(web): paginated branches keep their caching without "use memo" (pingdotgg#20743)

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

* refactor(web): pull request markdown keeps its caching without "use memo" hooks (pingdotgg#20744)

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

* refactor(web): the pull request detail panel keeps its caching with fewer "use memo" hooks (pingdotgg#20761)

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

* refactor(web): the open panel pull request URL keeps its caching without "use memo" (pingdotgg#20768)

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

* refactor(web): the command output panel keeps its caching without "use memo" hooks (pingdotgg#20763)

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

* fix(client-runtime): the agents pill counts background agents from earlier turns (pingdotgg#20785)

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

* refactor(web): the diff panel keeps its caching without "use memo" hooks (pingdotgg#20745)

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

* refactor(web): the composer builds model options without a "use memo" hook (pingdotgg#20780)

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

* refactor(web): the preview bridge keeps its stable thread ref without "use memo" hooks (pingdotgg#20746)

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

* refactor(web): the pull request code tab keeps its caching with one "use memo" hook (pingdotgg#20773)

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

* refactor(web): provider models keep their caching without "use memo" (pingdotgg#20775)

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

* refactor(web): the thread lineage panel keeps its caching without "use memo" hooks (pingdotgg#20789)

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

* refactor(web): the attachment preview keeps its caching without "use memo" hooks (pingdotgg#20757)

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

* refactor(web): the pending user input panel keeps its caching without "use memo" hooks (pingdotgg#20762)

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

* refactor(web): the queued runs control keeps its caching without "use memo" hooks (pingdotgg#20779)

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

* refactor(web): the open-in picker keeps its caching without "use memo" hooks (pingdotgg#20758)

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

* refactor(web): highlighted tokens keep their caching without "use memo" hooks (pingdotgg#20760)

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

* refactor(web): merged settings stay cached without "use memo" (pingdotgg#20765)

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

* fix(server): a running Claude workflow member shows its answer so far (pingdotgg#20786)

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

* refactor(web): the keybindings panel keeps its caching without "use memo" hooks (pingdotgg#20782)

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

* refactor(web): linked pull request status keeps its caching without "use memo" hooks (pingdotgg#20781)

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

* refactor(web): the new-thread hook keeps its caching without "use memo" (pingdotgg#20769)

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

* refactor(web): review file patches keep their caching without "use memo" hooks (pingdotgg#20788)

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

* chore(web): React compiler rules apply to every web file (pingdotgg#20791)

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

* refactor(server): resolve project and worktree folders in one place (pingdotgg#20449)

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

* refactor(server): route git config through one env helper and end option parsing before names (pingdotgg#20440)

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

* test(web): React tests run compiled in a real browser (pingdotgg#20797)

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

* fix(android): menu icons take taps (pingdotgg#20802)

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

* fix(android): a composer focused through an app switch stays above the keyboard (pingdotgg#20803)

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

* refactor(web): the usage chart keeps its caching without "use memo" (pingdotgg#20792)

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

* refactor(web): pull request detail keeps its caching without "use memo" (pingdotgg#20811)

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

* refactor(web): the legacy sidebar keeps its caching without "use memo" (pingdotgg#20793)

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

* refactor(web): turn diff summaries keep their caching without "use memo" (pingdotgg#20794)

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

* refactor(web): the pull requests page keeps its caching without "use memo" (pingdotgg#20820)

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

* refactor(web): the terminal drawer keeps its caching without "use memo" (pingdotgg#20799)

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

* refactor(web): the model picker keeps its caching without "use memo" (pingdotgg#20815)

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

* refactor(web): pull request code tab keeps its caching without "use memo" (pingdotgg#20816)

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

* refactor(web): find reveal refs stay cached without "use memo" (pingdotgg#20818)

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

* refactor(web): the branch selector keeps its caching without "use memo" (pingdotgg#20822)

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

* refactor(web): the guide excerpt keeps its caching without "use memo" (pingdotgg#20798)

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

* refactor(web): chat composer keeps its caching without "use memo" (pingdotgg#20834)

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

* refactor(web): the usage page keeps its caching without "use memo" (pingdotgg#20807)

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

* refactor(web): the hosted browser webview keeps its caching without "use memo" (pingdotgg#20824)

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

* refactor(web): the command palette provider lookup keeps its caching without "use memo" (pingdotgg#20827)

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

* chore(web): lint rejects "use memo" directives (pingdotgg#20843)

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

* perf(web): relative "checked" labels re-render only when their text changes (pingdotgg#20819)

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

* perf(web): toggling a client setting no longer re-renders every settings row (pingdotgg#20830)

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

* perf(web): typing in the ACP registry search no longer re-renders every result row (pingdotgg#20817)

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

* perf(web): searching keybindings only renders rows entering or leaving the filter (pingdotgg#20840)

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

* perf(web): unchanged model picker rows skip re-rendering while searching (pingdotgg#20838)

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

* perf(web): router updates no longer re-render thread route consumers (pingdotgg#20837)

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

* perf(web): a minute tick no longer re-renders every sidebar thread row (pingdotgg#20814)

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

* test(web): jsdom-leftovers tests run in a real browser (pingdotgg#20862)

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

* test(web): hook-harness tests run in a real browser (pingdotgg#20866)

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

* test(web): misc-b tests run in a real browser (pingdotgg#20869)

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

* test(web): settings tests run in a real browser (pingdotgg#20872)

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

* test(web): misc-a tests run in a real browser (pingdotgg#20868)

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

* test(web): chat tests run in a real browser (pingdotgg#20870)

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

* test(web): browser tests from different checkouts no longer fight over one port (pingdotgg#20875)

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

* fix(web): chat view no longer renders twice per update (pingdotgg#20847)

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

* perf(web): markdown replies no longer re-render on reconnects and config pushes (pingdotgg#20852)

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

* perf(web): provider status pushes no longer re-render every timeline row (pingdotgg#20854)

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

* perf(client): a reconnect snapshot keeps unchanged skills and providers identical (pingdotgg#20855)

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

* perf(web): a client setting write only re-renders readers whose value changed (pingdotgg#20848)

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

* perf(web): right panel tabs no longer all re-render on unrelated chat updates (pingdotgg#20853)

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

* perf(web): opening chat and usage dialogs no longer re-renders the whole page (pingdotgg#20859)

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

* perf(web): typing in form dialogs no longer re-renders the dialog chrome (pingdotgg#20842)

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

* fix(web): a project action's error belongs to the request that opened it (pingdotgg#20891)

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

* test(web): the open-in picker test waits for the menu to close (pingdotgg#20892)

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

* perf(web): opening an image preview no longer re-renders the chat view (pingdotgg#20845)

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

* perf(web): another thread streaming no longer re-renders the app root and thread panels (pingdotgg#20823)

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

* perf(client): equal query refetches no longer re-render PR rows (pingdotgg#20850)

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

* perf(client): provider status pushes no longer re-render environment presentation consumers (pingdotgg#20821)

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

* perf(web): a provider status push no longer re-renders every provider card and model row (pingdotgg#20851)

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

* test(web): onboarding and usage tests run in a real browser (pingdotgg#20902)

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

* test(web): pr-and-diff tests run in a real browser (pingdotgg#20901)

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

* test(web): chat markdown and timeline tests run in a real browser (pingdotgg#20905)

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

* test(web): provider, usage and relationship tests run in a real browser (pingdotgg#20914)

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

* perf(web): the open thread's chat chrome no longer re-renders on every streaming tick (pingdotgg#20860)

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

* test(web): every React test runs in a real browser (pingdotgg#20944)

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

* fix(release): release tests install Chromium for the web browser tests (pingdotgg#20934)

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

* fix(server): drop V1 projections nothing reads after the V2 upgrade (pingdotgg#20947)

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

* feat(server): t3 doctor can delete the database from before 0.1.0 (pingdotgg#20948)

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

* fix(web): a snoozed thread wakes in the open chat view (pingdotgg#21019)

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

* fix(web): time-based labels update under the React Compiler (pingdotgg#21026)

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

* test(web): the right panel Escape test waits for focus to return (pingdotgg#21030)

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

* fix(web): table expand button only shows when a cell is cut off (pingdotgg#19782)

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

* perf(mobile): Metro runs the React Compiler, with a coverage ratchet (pingdotgg#20967)

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

* perf(mobile): usage screens compile with the React Compiler (pingdotgg#20969)

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

* perf(mobile): Connect onboarding compiles with the React Compiler (pingdotgg#20970)

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

* perf(mobile): device preview compiles with the React Compiler (pingdotgg#20971)

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

* fix(merge): adapt fork features to upstream 2026-10-18 APIs

Post-merge adaptations for the upstream/main sync: split fork RPC handlers into ForkWsRpcGroup/layerForkWsRpc so the TypeScript requirements graph stays inferable; restore fork mobile components (MaterialListRow, ControlPillMenu) on the new components/ui paths; port fork quick-action hook tests to the browser runner; restore fork PR handoff task-destination coverage in upstream browser tests; fix j4code CLI invocation fallback args, storageCleanup null-branch subagent classification, and stale scope/dedup expectations.

---------

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: PR Batch Tester <agent@local.test>
aorwall added a commit to aorwall/t3code that referenced this pull request Oct 19, 2026
Merges `pingdotgg/t3code` up to `ab6be13d43`, from base `5c5dcbc60b`:
589 commits. Branched from `main` (`7e132898fa`), with no other merge PR
open.

Most of the range is the rest of upstream's move to the React Compiler,
plus its apps/web DOM tests moving to vitest browser mode
(`*.browser.test.tsx`, run in real Chromium). Upstream removed jsdom and
`react-test-renderer`.

## How the conflicts were resolved

All 27 conflicted files were resolved by the verdict `preflight.mjs`
printed for each. The tracker entry in `docs/fork/upstream-merge-log.md`
has the details.

**Tests**
- Seven upstream tests became browser tests. The fork's mocks were
re-ported into the new files, and the inventory was re-pointed at them.
- The fork's framed-preview tests moved to the fork-only
`PreviewView.frame.browser.test.tsx`. A browser-mode mock binds its
exports once, at load, so one file can't run both with and without the
desktop bridge.
- Three fork-only tests (ThreadForkDialog, MoatlessArtifactChip,
MobileSidebarDrawer) depended on `react-test-renderer` and on test
helpers upstream deleted. They are rewritten as browser tests.

**ChatView**
- Upstream moved the rewind dialog into `chat/ChatOverlayHosts.tsx`, and
the `checkpointFileRestore` gate moved with it.
- The ThreadDetailsPanel script props were re-applied in upstream's
inline JSX.

**Lockfile and package.json**
- `pnpm-lock.yaml` was re-derived with `install.mjs`.
- `apps/web/package.json` keeps the `moatless-api` workspace link and
the `tsc --noEmit` typecheck script.

**Converged**
- Upstream now renders Mermaid itself (`chat/MermaidDiagram.tsx`). The
fork's `fork/mermaidDiagram*` files, their inventory entries and the
Mermaid Diagram Delta section are deleted.

**Fixed along the way**
- The provider list's own "Add provider" button had no gate, on `main`
too. It is now behind `providerConfiguration`, like the title button.
- Upstream's React Compiler lint rules flagged 64 errors in fork-owned
files, and the compiler-coverage test found 2 bailouts (`finally` inside
a hook). All are fixed.
  - Most were `useMemo`/`useCallback` removals.
- The only behaviour change: sandbox "elapsed" times are now measured
from the status query's `dataUpdatedAt` instead of a `Date.now()` read
during render.

## Verification

`verify.mjs --sequential`: duplicate-adds, tripwires, resolution-check,
unsupported-methods (ADD 0 / DROP 0 / KEEP 2), lockfile, fmt, lint,
typecheck and build are all green.

The `test` step is red only on the five files that failed alone on
2026-10-17 too, on the same machine-only causes:
- `shared` `AgentScope`
- `ssh` `tunnel`
- `provider-opencode` `OpenCodeServerLedger`
- `t3` `AcpAdapterV2`
- `t3` `OrchestratorReplayFixtures`

`@t3tools/web` failed in the full run, and re-ran green after the fixes:
565 files, 8497 tests. The failure that wasn't a compiler bailout,
`WorkflowOpeningBlock.browser.test.tsx`, is upstream's file unchanged,
and it passed alone.

## Feature classification

### Usable as-is
- **Reasoning-effort stepping**: new `composer.increaseEffort` and
`composer.decreaseEffort` commands. They have no default binding, and
keybinding editing stays behind `serverAdministration`.
- **Transcript and markdown fixes**:
  - Windows paths and terminal links (pingdotgg#21069, pingdotgg#21199, pingdotgg#19627)
  - Math in Mermaid diagrams (pingdotgg#16198)
  - Code-block highlight jump (pingdotgg#20923)
  - Copied task lists (pingdotgg#14778)
  - Table expand button (pingdotgg#19782)
- **Message-list fixes**:
  - Huge-thread scroll loop (pingdotgg#21269)
  - Answered questions stay visible (pingdotgg#21086)
  - "Failed" status for failed runs (pingdotgg#20996)
  - Resumed-subagent rows (pingdotgg#18099)
  - Background-agent count (pingdotgg#20785)
  - A single completion sound (pingdotgg#17540)
- **Composer fixes**:
  - Spacing and centring (pingdotgg#21345, pingdotgg#12952, pingdotgg#17820, pingdotgg#21241)
  - Quotes (pingdotgg#20350, pingdotgg#19450)
  - Send shortcut on follow-ups (pingdotgg#20929)
  - `/tmp/x` no longer opens the slash menu (pingdotgg#19671)
  - Failed attachments don't block send (pingdotgg#20737)
  - HEIC attachments (pingdotgg#10429)
  - Long approval commands wrap (pingdotgg#17802)
  - Android Backspace (pingdotgg#18063)
- **Thread drag and drop into chat** (pingdotgg#19697, pingdotgg#20024).
- **Diff, file and pull request panel fixes**: pingdotgg#20297, pingdotgg#20333, pingdotgg#19089,
pingdotgg#18288, pingdotgg#17132, pingdotgg#21048, pingdotgg#17554, pingdotgg#19945, pingdotgg#15341, pingdotgg#21245, pingdotgg#21147.
- **Sidebar and breadcrumb fixes**: middle truncation (pingdotgg#18858, pingdotgg#17208),
"No project" scratch breadcrumb (pingdotgg#19721), and snoozed threads waking in
an open chat (pingdotgg#21019).
- **Settings and miscellaneous UI fixes**:
  - Model picker lists every custom model (pingdotgg#14961)
  - Font picker (pingdotgg#9814)
  - Settings search highlight (pingdotgg#20764)
  - Usage popover (pingdotgg#19808, pingdotgg#16936)
  - Web app manifest name (pingdotgg#19175)
  - Dark-mode switches (pingdotgg#14984)
- **Phone browser**: tapping away from the model picker no longer
presses what is under it (3f2dbd7).
- **client-runtime**: queries stay pending during a connection hand-off
(pingdotgg#18155), and a dropped session is not shown as a failed connection
(pingdotgg#18469).
- **React Compiler and render-performance work**: about 190 commits.
- **Workflow thread view**: `WorkflowOpeningBlock` shows a workflow's
phases and agents (pingdotgg#20857). It renders only when `workflowScript` is
set, which Moatless never sends; see the backend list.

### Unsupported in Moatless / needs implementation
- **`t3 doctor`, server telemetry and the Node CLI** (pingdotgg#20948, pingdotgg#15028,
pingdotgg#15921, pingdotgg#15913): upstream's server only, with no client surface.
- **SSH device hosts and T3 Connect/relay fixes** (pingdotgg#20377, pingdotgg#17440,
pingdotgg#18832, pingdotgg#19444, pingdotgg#18621, pingdotgg#17743, pingdotgg#18838): behind `FEATURES.connections`
or `FEATURES.deviceHub`.
- **Tailscale HTTPS row** (pingdotgg#21057): behind `FEATURES.connections`.
- **Remote server self-update and how-to-update messages** (pingdotgg#18980,
pingdotgg#18110): behind `FEATURES.serverUpdateBanner`.
- **Masking of secret settings fields** (pingdotgg#20446): the form is behind
`FEATURES.providerConfiguration`, because Moatless does not dispatch
`server.updateSettings`.
- **Desktop updater, desktop preview and local-machine fixes** (pingdotgg#21210,
pingdotgg#20994, pingdotgg#16026, pingdotgg#18549, pingdotgg#19846, pingdotgg#20206, pingdotgg#20277): desktop bridge only, or
behind `FEATURES.openInEditor`.

### Backend behavior to consider reproducing in Moatless
Added to [gaps: runtime
fixes](docs/fork/gaps.md#runtime-fixes-upstream-made-to-its-own-server).
- **`workflowScript: true` on a conversation message whose body is a
provider-native workflow script.** Without it the timeline shows the raw
script.
- **`endedWatch` on an ended pull request watch**, so watching again
doesn't repeat news the thread already got (pingdotgg#21155).
- **`pullRequests` on orchestrator MCP thread list and read results**
(pingdotgg#17454). Related: `t3_thread_send` now says why a message was refused
(pingdotgg#21027).
- **`vcs.createWorktree` always sends `path: null`** and expects the
server to place the worktree. Moatless doesn't dispatch this method; it
is under `projectManagement`.
- **Run lifecycle**:
  - Refuse `thread.create` for an id that already exists (pingdotgg#19704).
  - Cancel a preparing run on archive (pingdotgg#20073).
  - A parent Stop clears orphaned delegated follow-ups (pingdotgg#20310).
  - Queued messages land in order after a resume (pingdotgg#17773).
- **Workflow members stream thinking and tool calls into their own
threads** (pingdotgg#20786).
- **Pull request link handling**: canonicalise legacy links (pingdotgg#19129),
don't inherit watches into forks (pingdotgg#16623), and settle threads after
their pull request merges (pingdotgg#18232, pingdotgg#19937).

No new RPC methods. `vcs.createWorktree` is the only change to `rpc.ts`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---
Moatless task:
https://moatless.soaplabstest.com/tasks/5bcfa708-8eac-41b0-a580-c885a620afb5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews size:S 10-29 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant