# Commit history · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commits/b9c1293c0aad6196c393550867d73d07f55e9621)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: b9c1293c0aad6196c393550867d73d07f55e9621

Requested commit: b9c1293c0aad6196c393550867d73d07f55e9621

- [fix\(web\): PR Code tab keeps its files after a refresh with an unchanged diff \(\#22917\)](https://git.cafe/pingdotgg/t3code/commit/b9c1293c0aad6196c393550867d73d07f55e9621?format=markdown) — b9c1293c0aad6196c393550867d73d07f55e9621; Theo Browne

- [fix\(mobile\): opening a pull request no longer crashes with "Maximum update depth exceeded" \(\#22600\)](https://git.cafe/pingdotgg/t3code/commit/d0c5d7c4ed90c9018e41853cde4f10043c72b12a?format=markdown) — d0c5d7c4ed90c9018e41853cde4f10043c72b12a; tatsuaki watanabe

- [fix\(server\): t3_thread_read clamps oversized page sizes instead of failing \(\#22901\)](https://git.cafe/pingdotgg/t3code/commit/ee11fbd971b2f94d7ba2ec411a36581671f8494a?format=markdown) — ee11fbd971b2f94d7ba2ec411a36581671f8494a; Theo Browne

- [fix\(scripts\): mobile lint fails instead of passing when ktlint or detekt is missing \(\#22896\)](https://git.cafe/pingdotgg/t3code/commit/aef8b6fcf0f6cc5cc901618b3723dd60317e7ac4?format=markdown) — aef8b6fcf0f6cc5cc901618b3723dd60317e7ac4; Theo Browne

- [fix\(server\): server tests resolve the macOS temp dir symlink \(\#21442\)](https://git.cafe/pingdotgg/t3code/commit/2a27e153559bc400cf5d1799eee68083c129b3ad?format=markdown) — 2a27e153559bc400cf5d1799eee68083c129b3ad; tatsuaki watanabe

- [test\(telemetry\): keep fixture PIDs from colliding with the test worker \(\#21446\)](https://git.cafe/pingdotgg/t3code/commit/da46db6ea3008f9575657a025d0b57e12d3c9272?format=markdown) — da46db6ea3008f9575657a025d0b57e12d3c9272; Victor Vogel

- [fix\(server\): failed provider updates say why \(\#22506\)](https://git.cafe/pingdotgg/t3code/commit/f08781009f741891a263772ec959e38f69fefccf?format=markdown) — f08781009f741891a263772ec959e38f69fefccf; Koushik_xd

- [docs\(composer\): queued messages follow the Follow-up behavior setting \(\#22857\)](https://git.cafe/pingdotgg/t3code/commit/8541f863747815c515410777d902a2814faf75e9?format=markdown) — 8541f863747815c515410777d902a2814faf75e9; Theo Browne

- [fix\(tailscale\): a timed-out tailscale probe no longer outlives its call \(\#22900\)](https://git.cafe/pingdotgg/t3code/commit/0d876e004aed0b5d6b5fe3bd65d7375d6c29b146?format=markdown) — 0d876e004aed0b5d6b5fe3bd65d7375d6c29b146; Theo Browne

- [fix\(server\): HTML preview reports a browser start error instead of an internal error \(\#22895\)](https://git.cafe/pingdotgg/t3code/commit/60dc0a044c1d0e2fe305eeb2b3cb6311f4fd2d8b?format=markdown) — 60dc0a044c1d0e2fe305eeb2b3cb6311f4fd2d8b; Theo Browne

- [docs\(user\): the outside agents guide says which addresses agents can sign in over \(\#22377\)](https://git.cafe/pingdotgg/t3code/commit/9c6523d5bec7642ccb2fcec50157dd984e2d6176?format=markdown) — 9c6523d5bec7642ccb2fcec50157dd984e2d6176; Gourav Kumar Dhiman

- [fix\(mobile\): chat feed no longer re-derives on every render \(\#22913\)](https://git.cafe/pingdotgg/t3code/commit/71b867080b1dc5853b53417efe15b2443f33f904?format=markdown) — 71b867080b1dc5853b53417efe15b2443f33f904; Theo Browne

- [fix\(server\): a desktop backend whose launcher died shuts down cleanly instead of crashing \(\#22471\)](https://git.cafe/pingdotgg/t3code/commit/2936b90883b2e23b00e1c2a5361ea545c3ac8dff?format=markdown) — 2936b90883b2e23b00e1c2a5361ea545c3ac8dff; Dara Adedeji

- [fix\(pi\): declare properties on MCP tool schemas that omit them \(\#21822\)](https://git.cafe/pingdotgg/t3code/commit/9892aca206279640b17a5453578f9f2b3178800d?format=markdown) — 9892aca206279640b17a5453578f9f2b3178800d; Taissa

- [fix\(server\): Codex no longer offers a one-click update for installs it can't detect \(\#22504\)](https://git.cafe/pingdotgg/t3code/commit/c25ba721ae403aacce6974bb1fb044cc65bb1e79?format=markdown) — c25ba721ae403aacce6974bb1fb044cc65bb1e79; Koushik_xd

- [fix\(cursor\): a closed-stream write in the Cursor SDK no longer stops the server \(\#22897\)](https://git.cafe/pingdotgg/t3code/commit/f54dfc09915d5fd7ee6476cdf446cd978abc197c?format=markdown) — f54dfc09915d5fd7ee6476cdf446cd978abc197c; Theo Browne

- [refactor\(web\): ChatView's paste-to-focus, titlebar controls, and timeline overlays move out \(\#23072\)](https://git.cafe/pingdotgg/t3code/commit/322d08dbd46eecf4446d33d85f9fd7ff08d60f1b?format=markdown) — 322d08dbd46eecf4446d33d85f9fd7ff08d60f1b; Julius Marminge

- [refactor\(web\): ChatView's thread derivations are tested functions in ChatView.logic \(\#23071\)](https://git.cafe/pingdotgg/t3code/commit/9952a7aa518275c4c42f7cf57b28409122a22537?format=markdown) — 9952a7aa518275c4c42f7cf57b28409122a22537; Julius Marminge

- [refactor\(web\): ChatView's pull request checkout lives in usePullRequestDraftThread \(\#23070\)](https://git.cafe/pingdotgg/t3code/commit/114f77fd056346babc1fa9571d947147bed3f72b?format=markdown) — 114f77fd056346babc1fa9571d947147bed3f72b; Julius Marminge

- [refactor\(web\): ChatView's model, mode, and workspace choices live in useComposerSelection \(\#23069\)](https://git.cafe/pingdotgg/t3code/commit/976a601b87342646913ee9f77226762a9f7ad82a?format=markdown) — 976a601b87342646913ee9f77226762a9f7ad82a; Julius Marminge

- [refactor\(web\): ChatView's project clone banner lives in useProjectCloneBanner \(\#23068\)](https://git.cafe/pingdotgg/t3code/commit/7be791c675347ac75eb32e89cf28370db2b08341?format=markdown) — 7be791c675347ac75eb32e89cf28370db2b08341; Julius Marminge

- [refactor\(web\): ChatView's attachment preview handoff lives in useAttachmentPreviewHandoff \(\#23067\)](https://git.cafe/pingdotgg/t3code/commit/5b8298c23848ffe20f2185a48d6d064eb18e1c77?format=markdown) — 5b8298c23848ffe20f2185a48d6d064eb18e1c77; Julius Marminge

- [refactor\(web\): ChatView's revert, rollback, and fork live in useTimelineRewind \(\#23066\)](https://git.cafe/pingdotgg/t3code/commit/9f087f782c2357f3c08b79266e23e3b2299626c1?format=markdown) — 9f087f782c2357f3c08b79266e23e3b2299626c1; Julius Marminge

- [refactor\(web\): ChatView's snooze, settle, and checkout actions live in useThreadLifecycle \(\#23065\)](https://git.cafe/pingdotgg/t3code/commit/92105d49946474a048f2fccadb3d2c1300d7d27b?format=markdown) — 92105d49946474a048f2fccadb3d2c1300d7d27b; Julius Marminge

- [refactor\(web\): ChatView's right panel actions live in useRightPanelActions \(\#23064\)](https://git.cafe/pingdotgg/t3code/commit/ebe828cd9ddee677d8c9adb3f5c33a772d285978?format=markdown) — ebe828cd9ddee677d8c9adb3f5c33a772d285978; Julius Marminge

- [refactor\(web\): ChatView's terminal actions live in useChatTerminalActions \(\#23063\)](https://git.cafe/pingdotgg/t3code/commit/379a391fcb9951afae0bcf1afe61236f095fc867?format=markdown) — 379a391fcb9951afae0bcf1afe61236f095fc867; Julius Marminge

- [refactor\(web\): ChatView's send paths live in useComposerSend \(\#23062\)](https://git.cafe/pingdotgg/t3code/commit/f136d5a75515c7eee9d2ce0c50a20ca140fec32c?format=markdown) — f136d5a75515c7eee9d2ce0c50a20ca140fec32c; Julius Marminge

- [refactor\(web\): composer key handling lives in useComposerCommandKey \(\#23060\)](https://git.cafe/pingdotgg/t3code/commit/e78f58046876271109bf6985e8f46769d8e7505d?format=markdown) — e78f58046876271109bf6985e8f46769d8e7505d; Julius Marminge

- [refactor\(web\): the composer's footer controls render in ComposerControlsBar \(\#23058\)](https://git.cafe/pingdotgg/t3code/commit/1444b3f99442630c92abfb5157840d500487d145?format=markdown) — 1444b3f99442630c92abfb5157840d500487d145; Julius Marminge

- [refactor\(web\): composer file intake lives in useComposerAttachmentIntake \(\#23049\)](https://git.cafe/pingdotgg/t3code/commit/98c494ec69a47871d8544e45df23d61928326692?format=markdown) — 98c494ec69a47871d8544e45df23d61928326692; Julius Marminge

- [refactor\(web\): composer context imports live in useComposerContextImport \(\#23048\)](https://git.cafe/pingdotgg/t3code/commit/fa3700214ec1701c9b28d1ab5debcc1d66bbb2c9?format=markdown) — fa3700214ec1701c9b28d1ab5debcc1d66bbb2c9; Julius Marminge

- [refactor\(web\): the prompt stash lives in useComposerStash \(\#23046\)](https://git.cafe/pingdotgg/t3code/commit/0755f98401fec0f3400d4c4ef2294aa92ace39d1?format=markdown) — 0755f98401fec0f3400d4c4ef2294aa92ace39d1; Julius Marminge

- [refactor\(web\): the composer's layout and provider hooks live in their own files \(\#23042\)](https://git.cafe/pingdotgg/t3code/commit/22fd2aca1fcfc4d9d45fa7352796dc6a8d8b95a6?format=markdown) — 22fd2aca1fcfc4d9d45fa7352796dc6a8d8b95a6; Julius Marminge

- [perf\(web\): typing no longer re-renders the traits picker or attach button \(\#23040\)](https://git.cafe/pingdotgg/t3code/commit/c19d9977d483f8c661c9ad6bede0f1d8da517d31?format=markdown) — c19d9977d483f8c661c9ad6bede0f1d8da517d31; Julius Marminge

- [feat\(claude\): idle compaction has a global default and per-instance overrides \(\#23037\)](https://git.cafe/pingdotgg/t3code/commit/d13fc846700e5bb7d63e1bfaabb1e55733912b21?format=markdown) — d13fc846700e5bb7d63e1bfaabb1e55733912b21; Julius Marminge

- [feat\(server,web,mobile\): approvals in full access say why Claude asked \(\#22546\)](https://git.cafe/pingdotgg/t3code/commit/e74924538705d774e2e1c56616485351d33d38db?format=markdown) — e74924538705d774e2e1c56616485351d33d38db; Julius Marminge

- [feat: show automation messages as compact timeline rows \(\#22638\)](https://git.cafe/pingdotgg/t3code/commit/d27c6067a9162150f654e38f455a7a936ef79178?format=markdown) — d27c6067a9162150f654e38f455a7a936ef79178; Julius Marminge

- [fix\(desktop\): use Clerk's upstream fix for abandoned browser sign-ins \(\#23038\)](https://git.cafe/pingdotgg/t3code/commit/41967084e3979818e0bf8fa7cea31ffb6feb7369?format=markdown) — 41967084e3979818e0bf8fa7cea31ffb6feb7369; Robert Soriano

- [refactor\(web\): the add environment dialog owns its form state \(\#22686\)](https://git.cafe/pingdotgg/t3code/commit/0bdf33a34dc520d3ab1364cd116686b3492184bd?format=markdown) — 0bdf33a34dc520d3ab1364cd116686b3492184bd; Julius Marminge

- [perf\(web\): a streaming thread re-renders only its own sidebar row \(\#22730\)](https://git.cafe/pingdotgg/t3code/commit/5a0d1594e8656a382eff73f65a963506f1f35c1a?format=markdown) — 5a0d1594e8656a382eff73f65a963506f1f35c1a; Julius Marminge

- [fix\(server\): removing a worktree on Windows no longer deletes what its junctions point to \(\#21099\)](https://git.cafe/pingdotgg/t3code/commit/fa42465ff6484cad4301e65c40dbf68668fd05a5?format=markdown) — fa42465ff6484cad4301e65c40dbf68668fd05a5; Dara Adedeji

- [docs\(agents\): proof for a bug fix depends on the bug \(\#23008\)](https://git.cafe/pingdotgg/t3code/commit/9179178fdff5ac750c29ef8d6234d5e75538c124?format=markdown) — 9179178fdff5ac750c29ef8d6234d5e75538c124; Julius Marminge

- [fix\(server\): agents get a short, current model list instead of a 55k-character catalog dump \(\#22889\)](https://git.cafe/pingdotgg/t3code/commit/680152e27b2a961686389ca69a1557cbb2c55f08?format=markdown) — 680152e27b2a961686389ca69a1557cbb2c55f08; Theo Browne

- [fix\(desktop\): an abandoned browser sign-in no longer blocks T3 Connect for 3 minutes \(\#22903\)](https://git.cafe/pingdotgg/t3code/commit/810e8f62f0eff2f3b6ae4602f781d9bb80607913?format=markdown) — 810e8f62f0eff2f3b6ae4602f781d9bb80607913; Theo Browne

- [fix\(server\): answered questions say "already answered" instead of "not found" \(\#22850\)](https://git.cafe/pingdotgg/t3code/commit/e822ba78ea23612f57093235f84813f385cf6431?format=markdown) — e822ba78ea23612f57093235f84813f385cf6431; Theo Browne

- [fix\(server\): the background service picks up JAVA_HOME from the login shell \(\#22856\)](https://git.cafe/pingdotgg/t3code/commit/a7c22f12b7f62dbc859749c73ec6f9c031af71d7?format=markdown) — a7c22f12b7f62dbc859749c73ec6f9c031af71d7; Theo Browne

- [fix\(shared\): accept a pasted ChatGPT callback URL that is missing http:// \(\#21750\)](https://git.cafe/pingdotgg/t3code/commit/35e5d6229ba2c121b61e56cd982c6e2fb3112ef0?format=markdown) — 35e5d6229ba2c121b61e56cd982c6e2fb3112ef0; project516

- [fix\(opencode\): out-of-funds failures show OpenCode's message instead of a usage limit \(\#22596\)](https://git.cafe/pingdotgg/t3code/commit/2f021ee7d3fd0130ceebeac00ef2d161a916f6d4?format=markdown) — 2f021ee7d3fd0130ceebeac00ef2d161a916f6d4; fixfon

- [fix\(mcp\): point a bare thread uuid at its mcp: thread in thread_not_found \(\#22452\)](https://git.cafe/pingdotgg/t3code/commit/b260a7cf69d061a3950220c320b85f8ac043a00c?format=markdown) — b260a7cf69d061a3950220c320b85f8ac043a00c; fixfon

- [fix\(server\): commit prompts no longer repeat CLAUDE.md when it matches AGENTS.md \(\#22848\)](https://git.cafe/pingdotgg/t3code/commit/1d9060b9afa0a1305cbe652cd5aadfc59dab59bc?format=markdown) — 1d9060b9afa0a1305cbe652cd5aadfc59dab59bc; Theo Browne

- [fix\(server\): keep Antigravity question options and no-custom-answer flag in V2 \(\#22019\)](https://git.cafe/pingdotgg/t3code/commit/2d408943287b7f9e7cdc8ba6379a617569b21afd?format=markdown) — 2d408943287b7f9e7cdc8ba6379a617569b21afd; fixfon

- [fix\(gitlab\): merge request diffs page 30 files at a time so GitLab 15.7 to 17.10 answer \(\#21909\)](https://git.cafe/pingdotgg/t3code/commit/588150e39d375b1316ab8093a3f604dc31edc6ae?format=markdown) — 588150e39d375b1316ab8093a3f604dc31edc6ae; Igor Makowski

- [fix\(codex\): keep every path of a multi-file patch \(\#22541\)](https://git.cafe/pingdotgg/t3code/commit/aacd1ee33779c986831c74aee274cb4694dcd900?format=markdown) — aacd1ee33779c986831c74aee274cb4694dcd900; Victor Vogel

- [fix\(server\): avoid expensive diff minimization in status refreshes \(\#21872\)](https://git.cafe/pingdotgg/t3code/commit/370b9ae793bbf2bd7062001bc0b00653dcd61d03?format=markdown) — 370b9ae793bbf2bd7062001bc0b00653dcd61d03; Lakshmi Tanmay

- [fix\(server\): t3 pair in a worktree no longer falls back to the live install \(\#22855\)](https://git.cafe/pingdotgg/t3code/commit/448b8a918694e84137f850c6526d75aacfb2292d?format=markdown) — 448b8a918694e84137f850c6526d75aacfb2292d; Theo Browne

- [fix\(server\): delegated Claude children follow your subagent cache TTL setting \(\#22841\)](https://git.cafe/pingdotgg/t3code/commit/066c8fc0cd04c97988ff8892e440189545ac6994?format=markdown) — 066c8fc0cd04c97988ff8892e440189545ac6994; Theo Browne

- [fix\(queue\): send selected held messages when a thread is stopped \(\#22790\)](https://git.cafe/pingdotgg/t3code/commit/96f09c6558b098f05ad0c027afa3846209c03d4f?format=markdown) — 96f09c6558b098f05ad0c027afa3846209c03d4f; Yash Singh

- [fix\(release\): keep Vercel warnings out of deployment URLs \(\#22817\)](https://git.cafe/pingdotgg/t3code/commit/1688f965682d331da16a8c39f049592361f69c8d?format=markdown) — 1688f965682d331da16a8c39f049592361f69c8d; Theo Browne

- [fix\(release\): include pnpm hook in Vercel uploads \(\#22813\)](https://git.cafe/pingdotgg/t3code/commit/688ee52f0e8fcc6c0789f82d8145441b6663e7eb?format=markdown) — 688ee52f0e8fcc6c0789f82d8145441b6663e7eb; Theo Browne

- [fix\(web\): images on their own line no longer sit beside their label \(\#22787\)](https://git.cafe/pingdotgg/t3code/commit/e27a03e94d43b504cfc3933282af913763312afd?format=markdown) — e27a03e94d43b504cfc3933282af913763312afd; Theo Browne

- [fix\(web\): steers split a finished turn's work instead of stacking under it \(\#22783\)](https://git.cafe/pingdotgg/t3code/commit/a8bb769d65b3374314da545920c9f7ee027e2b4c?format=markdown) — a8bb769d65b3374314da545920c9f7ee027e2b4c; Theo Browne

- [fix\(server\): stalled clones say "Stalled" instead of a frozen speed \(\#22780\)](https://git.cafe/pingdotgg/t3code/commit/8fe4206decd202f951a270741cd3d1c8b32dd455?format=markdown) — 8fe4206decd202f951a270741cd3d1c8b32dd455; Theo Browne

- [perf\(dev\): faster first load for shared dev servers \(\#22776\)](https://git.cafe/pingdotgg/t3code/commit/1dfb57287174230e5c386e452f54bb0cce2fc32f?format=markdown) — 1dfb57287174230e5c386e452f54bb0cce2fc32f; Theo Browne

- [fix\(scripts\): check:changed no longer skips knip after a removed import \(\#22784\)](https://git.cafe/pingdotgg/t3code/commit/1f4eae7253149dcc4f5547aca1880ff36b2dc7b0?format=markdown) — 1f4eae7253149dcc4f5547aca1880ff36b2dc7b0; Theo Browne

- [feat\(scripts\): one command checks what the branch changed \(\#22767\)](https://git.cafe/pingdotgg/t3code/commit/74541bab17270c35f4418d4e543d85628632ed8f?format=markdown) — 74541bab17270c35f4418d4e543d85628632ed8f; Theo Browne

- [fix\(web\): ⌘Z undoes a settle even when the composer has focus \(\#22607\)](https://git.cafe/pingdotgg/t3code/commit/21da3061aa006fc852ea4bd84c31ec084a3afa26?format=markdown) — 21da3061aa006fc852ea4bd84c31ec084a3afa26; Theo Browne

- [docs\(agents\): read vendored \.repos with git show when sparse-excluded \(\#22764\)](https://git.cafe/pingdotgg/t3code/commit/6490a9e8748aef55d04d3f4f61b77fba90b4cf1b?format=markdown) — 6490a9e8748aef55d04d3f4f61b77fba90b4cf1b; Theo Browne

- [perf\(server\): skip the macOS xcrun git shim \(\#22759\)](https://git.cafe/pingdotgg/t3code/commit/efdda5e52128c873da07f97c2ffb8ae4b55db8a3?format=markdown) — efdda5e52128c873da07f97c2ffb8ae4b55db8a3; Theo Browne

- [refactor\(web\): saved and T3 Connect environment rows live in their own file \(\#22685\)](https://git.cafe/pingdotgg/t3code/commit/848e352b48f982e0f1fe134aa9712d75ba7da3b9?format=markdown) — 848e352b48f982e0f1fe134aa9712d75ba7da3b9; Julius Marminge

- [refactor\(web\): authorized clients and endpoint rows live in their own file \(\#22684\)](https://git.cafe/pingdotgg/t3code/commit/263eef215de4df504235609e1daaacd637fa42c7?format=markdown) — 263eef215de4df504235609e1daaacd637fa42c7; Julius Marminge

- [refactor\(web\): the connections page's pure helpers live in ConnectionsSettings.logic \(\#22683\)](https://git.cafe/pingdotgg/t3code/commit/9dc28a125a845cd98a7984c72169c4cc34694119?format=markdown) — 9dc28a125a845cd98a7984c72169c4cc34694119; Julius Marminge

- [refactor\(web\): the background activity setting and its dialog live in their own file \(\#22669\)](https://git.cafe/pingdotgg/t3code/commit/381514e7af09293b35d11e21c21e5d7fe65ccb84?format=markdown) — 381514e7af09293b35d11e21c21e5d7fe65ccb84; Julius Marminge

- [refactor\(web\): the appearance settings page lives in its own file \(\#22668\)](https://git.cafe/pingdotgg/t3code/commit/501f5c5757c6e5b60e59b9756c125e37154909d0?format=markdown) — 501f5c5757c6e5b60e59b9756c125e37154909d0; Julius Marminge

- [refactor\(web\): the typography settings section lives in its own file \(\#22667\)](https://git.cafe/pingdotgg/t3code/commit/568cbb42e389f4532693457c1956904e078413e1?format=markdown) — 568cbb42e389f4532693457c1956904e078413e1; Julius Marminge

- [refactor\(web\): the archived threads settings page lives in its own file \(\#22666\)](https://git.cafe/pingdotgg/t3code/commit/0b91504aba9d485cec4609948b097dac6426acd7?format=markdown) — 0b91504aba9d485cec4609948b097dac6426acd7; Julius Marminge

- [refactor\(web\): ChatView's send preparation is pure functions in ChatView.logic \(\#22734\)](https://git.cafe/pingdotgg/t3code/commit/38b13e977efe65dee331b15f950b9164b4159489?format=markdown) — 38b13e977efe65dee331b15f950b9164b4159489; Julius Marminge

- [refactor\(web\): ChatView's draft machine routing lives in useDraftEnvironmentRouting \(\#22728\)](https://git.cafe/pingdotgg/t3code/commit/91a0a2901ac51d330b3cd06618629c98da3f4694?format=markdown) — 91a0a2901ac51d330b3cd06618629c98da3f4694; Julius Marminge

- [refactor\(web\): ChatView's subagent, goal, background-work and branch banners are built in ThreadActivityBanners \(\#22725\)](https://git.cafe/pingdotgg/t3code/commit/bd7aab2c95ef13fe93956cea8d88ca1cfbaf9172?format=markdown) — bd7aab2c95ef13fe93956cea8d88ca1cfbaf9172; Julius Marminge

- [refactor\(web\): ChatView's machine and server-update banners live in useSystemComposerBanners \(\#22710\)](https://git.cafe/pingdotgg/t3code/commit/030be16739858801ba4ebd125a1da63aababcca7?format=markdown) — 030be16739858801ba4ebd125a1da63aababcca7; Julius Marminge

- [refactor\(web\): ChatView's timeline follow and anchoring lives in useTimelineFollow \(\#22701\)](https://git.cafe/pingdotgg/t3code/commit/6b13e8f01ce68a2b936f709fccbe803c43b41a05?format=markdown) — 6b13e8f01ce68a2b936f709fccbe803c43b41a05; Julius Marminge

- [refactor\(web\): ChatView's right panel lives in its own component \(\#22700\)](https://git.cafe/pingdotgg/t3code/commit/8da8f613ffdaaed6f3b01bf6d461f34e40b8b859?format=markdown) — 8da8f613ffdaaed6f3b01bf6d461f34e40b8b859; Julius Marminge

- [refactor\(web\): ChatView's persistent terminal drawers live in their own component \(\#22680\)](https://git.cafe/pingdotgg/t3code/commit/a97f7f8e8d872a4ed1c8ecdedbd7e75803f5d276?format=markdown) — a97f7f8e8d872a4ed1c8ecdedbd7e75803f5d276; Julius Marminge

- [refactor\(web\): ChatView's module-level helpers live in their own files \(\#22665\)](https://git.cafe/pingdotgg/t3code/commit/9c3e743a4560d91bfb480d46a4b6bc1f979b7bd7?format=markdown) — 9c3e743a4560d91bfb480d46a4b6bc1f979b7bd7; Julius Marminge

- [refactor\(web\): chat markdown images and videos live in their own module \(\#22694\)](https://git.cafe/pingdotgg/t3code/commit/7ffc3bb7e80d88327a06d667e4be1bdef85329d3?format=markdown) — 7ffc3bb7e80d88327a06d667e4be1bdef85329d3; Julius Marminge

- [refactor\(web\): chat markdown links and file chips live in their own modules \(\#22693\)](https://git.cafe/pingdotgg/t3code/commit/827f6d4f4a363e646f47f320285d28c3885113b7?format=markdown) — 827f6d4f4a363e646f47f320285d28c3885113b7; Julius Marminge

- [refactor\(web\): chat markdown tables and details live in their own components \(\#22692\)](https://git.cafe/pingdotgg/t3code/commit/5c5d6ed3b6a24416169878a4c6dfc564dbae33b9?format=markdown) — 5c5d6ed3b6a24416169878a4c6dfc564dbae33b9; Julius Marminge

- [refactor\(web\): the Mermaid code block lives in its own component file \(\#22691\)](https://git.cafe/pingdotgg/t3code/commit/36bda3cca74cfd2e7f2623e29d3c1943167271bc?format=markdown) — 36bda3cca74cfd2e7f2623e29d3c1943167271bc; Julius Marminge

- [refactor\(web\): chat markdown code blocks live in their own module \(\#22690\)](https://git.cafe/pingdotgg/t3code/commit/5f0a0d1c2f84271714f6bdf7919703b62e3325fe?format=markdown) — 5f0a0d1c2f84271714f6bdf7919703b62e3325fe; Julius Marminge

- [refactor\(web\): the pull request list's grouping helper lives in a logic module \(\#22727\)](https://git.cafe/pingdotgg/t3code/commit/a003b73aa830ff8e35459d33e675884652552c1c?format=markdown) — a003b73aa830ff8e35459d33e675884652552c1c; Julius Marminge

- [perf\(web\): Shift re-renders only each row's quick-action group \(\#22726\)](https://git.cafe/pingdotgg/t3code/commit/57d784404ed1814816d135484f9820e6824dc7c2?format=markdown) — 57d784404ed1814816d135484f9820e6824dc7c2; Julius Marminge

- [refactor\(web\): the pull requests route only validates its search; the page lives under components \(\#22706\)](https://git.cafe/pingdotgg/t3code/commit/35b056638f6daf23494a191307979913f5bafb63?format=markdown) — 35b056638f6daf23494a191307979913f5bafb63; Julius Marminge

- [refactor\(web\): the pull requests page's scope and grouping hooks live in their own module \(\#22705\)](https://git.cafe/pingdotgg/t3code/commit/5a31f4cf9c14b69db7a471dafb38c35a4b2db86d?format=markdown) — 5a31f4cf9c14b69db7a471dafb38c35a4b2db86d; Julius Marminge

- [refactor\(web\): the pull request list's rows read the speed-mode modifier themselves \(\#22704\)](https://git.cafe/pingdotgg/t3code/commit/787e0e4a2f8a283da4782ed8cd35817ae791cb02?format=markdown) — 787e0e4a2f8a283da4782ed8cd35817ae791cb02; Julius Marminge

- [refactor\(web\): the pull request detail loader lives in its own hook \(\#22703\)](https://git.cafe/pingdotgg/t3code/commit/5db00458e522ed02285f024463c4d7a9aad05f3b?format=markdown) — 5db00458e522ed02285f024463c4d7a9aad05f3b; Julius Marminge

- [refactor\(web\): the pull request header's actions live in their own components \(\#22702\)](https://git.cafe/pingdotgg/t3code/commit/8f7de1114121ca9fcdfe5c3f6e1d095124f2bef1?format=markdown) — 8f7de1114121ca9fcdfe5c3f6e1d095124f2bef1; Julius Marminge

- [refactor\(web\): the pull request header's crumbs, title editor and base branch live in their own components \(\#22672\)](https://git.cafe/pingdotgg/t3code/commit/b302290c17a02d988db67ba4e2f0eda0c4615a03?format=markdown) — b302290c17a02d988db67ba4e2f0eda0c4615a03; Julius Marminge

- [refactor\(web\): the pull requests column lives in its own component \(\#22671\)](https://git.cafe/pingdotgg/t3code/commit/09bd6547548c31b95b2cf7de160c88e3767366de?format=markdown) — 09bd6547548c31b95b2cf7de160c88e3767366de; Julius Marminge

- [feat\(dev\): first dev start seeds real data and warms deps \(\#22744\)](https://git.cafe/pingdotgg/t3code/commit/ad4f18d83fe57b691b9858f62d2ed48459ea759d?format=markdown) — ad4f18d83fe57b691b9858f62d2ed48459ea759d; Theo Browne

- [refactor\(web\): sidebar list markers and draft rows live in their own files \(\#22729\)](https://git.cafe/pingdotgg/t3code/commit/e7f62ef05daedd08c320da0526b616396d3c6aae?format=markdown) — e7f62ef05daedd08c320da0526b616396d3c6aae; Julius Marminge

- [refactor\(web\): the sidebar's thread rows live in their own file \(\#22696\)](https://git.cafe/pingdotgg/t3code/commit/00ceb2dc7492115f8a95a867bc7c0e3a05b40bd3?format=markdown) — 00ceb2dc7492115f8a95a867bc7c0e3a05b40bd3; Julius Marminge

More commits follow; continue with `GET /api/repos/pingdotgg/t3code/commits?after=ImI3YjkwNWRlOWNmMzRjMDI3ZDFhZDY1OTY0MTQ2NTc4ZTEzNTA2Yzci`.
