# Commit history · pingdotgg/t3code

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

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

Visibility: public

Requested revision: e94ca8a1225fbd6706d4cc9f6d38de71362d3e5b

Requested commit: e94ca8a1225fbd6706d4cc9f6d38de71362d3e5b

- [fix\(mobile\): Screens 5.0.0-t3.35 stops an iPhone Duo unfold crash](https://git.cafe/pingdotgg/t3code/commit/e94ca8a1225fbd6706d4cc9f6d38de71362d3e5b?format=markdown) — e94ca8a1225fbd6706d4cc9f6d38de71362d3e5b; Julius Marminge

- [fix\(mobile\): the iPhone Duo's search field and composer line up with its tab bar](https://git.cafe/pingdotgg/t3code/commit/5877d50a540f0e8d4cc0e6b8d51252a431443901?format=markdown) — 5877d50a540f0e8d4cc0e6b8d51252a431443901; Julius Marminge

- [fix\(mobile\): a row added while a fold settles still scrolls into view](https://git.cafe/pingdotgg/t3code/commit/2b3f7fbf39e2eb82d540e41553db84c46c8760f7?format=markdown) — 2b3f7fbf39e2eb82d540e41553db84c46c8760f7; Julius Marminge

- [fix\(mobile\): folding the Duo keeps the thread's end or the reader's line in place](https://git.cafe/pingdotgg/t3code/commit/5b5e9062d3ecec8c4a26f94cc1cb8b701bc45122?format=markdown) — 5b5e9062d3ecec8c4a26f94cc1cb8b701bc45122; Julius Marminge

- [fix\(mobile\): a thread re-render no longer turns following back on](https://git.cafe/pingdotgg/t3code/commit/a701ab26afd00d94b9614e822ab6bbd0d19e8f81?format=markdown) — a701ab26afd00d94b9614e822ab6bbd0d19e8f81; Julius Marminge

- [fix\(mobile\): the search freeze fix touches only UIKit's search field observer](https://git.cafe/pingdotgg/t3code/commit/fdfc6ea1c154022451eda16aed4ef66b5d19b610?format=markdown) — fdfc6ea1c154022451eda16aed4ef66b5d19b610; Julius Marminge

- [fix\(mobile\): a closed search no longer risks freezing the app](https://git.cafe/pingdotgg/t3code/commit/5bba602f0d1a7c6d9561c3557526efa4628c0dcb?format=markdown) — 5bba602f0d1a7c6d9561c3557526efa4628c0dcb; Julius Marminge

- [fix\(mobile\): the iPhone Duo searches from a field at the bottom of its list](https://git.cafe/pingdotgg/t3code/commit/938862484c8f2c780419d0e1f0589720f5bffa3f?format=markdown) — 938862484c8f2c780419d0e1f0589720f5bffa3f; Julius Marminge

- [fix\(mobile\): header actions update when only their contents change](https://git.cafe/pingdotgg/t3code/commit/dbccd67a8d1a87956dffbc8efff527f054b41133?format=markdown) — dbccd67a8d1a87956dffbc8efff527f054b41133; Julius Marminge

- [fix\(mobile\): unfolding the Duo shows the sidebar as the split expands](https://git.cafe/pingdotgg/t3code/commit/b3ac8cde0a0c1db8804d1d45b6f965d0c2f6ac55?format=markdown) — b3ac8cde0a0c1db8804d1d45b6f965d0c2f6ac55; Julius Marminge

- [fix\(mobile\): a list keeps its title after its tab was hidden through a fold](https://git.cafe/pingdotgg/t3code/commit/29bdddb988a07c6aff9ba462f99f607100dced5f?format=markdown) — 29bdddb988a07c6aff9ba462f99f607100dced5f; Julius Marminge

- [fix\(mobile\): the pull requests tab's empty detail asks for a pull request](https://git.cafe/pingdotgg/t3code/commit/c23590a93552b91c4f527ffb31062cdae1c71107?format=markdown) — c23590a93552b91c4f527ffb31062cdae1c71107; Julius Marminge

- [fix\(mobile\): iPhone Duo sheets use their full width and native headers](https://git.cafe/pingdotgg/t3code/commit/fe869aba229e646d62674a08df914ce41c496803?format=markdown) — fe869aba229e646d62674a08df914ce41c496803; Julius Marminge

- [fix\(mobile\): returning to a tab clears its old detail instead of crashing](https://git.cafe/pingdotgg/t3code/commit/3f0e6219d0f4d6f3a98911a8f592600cd50a096a?format=markdown) — 3f0e6219d0f4d6f3a98911a8f592600cd50a096a; Julius Marminge

- [fix\(mobile\): the first tab tap after folding the Duo reaches the app](https://git.cafe/pingdotgg/t3code/commit/ed4b4a844f190019cf49accc7564f8463d89edc5?format=markdown) — ed4b4a844f190019cf49accc7564f8463d89edc5; Julius Marminge

- [fix\(mobile\): the thread feed keeps its place when its width changes](https://git.cafe/pingdotgg/t3code/commit/84df3e96d5f0fa65e3f873f5a8a6aab1d50566ac?format=markdown) — 84df3e96d5f0fa65e3f873f5a8a6aab1d50566ac; Julius Marminge

- [fix\(mobile\): a fresh pull request opens below the header on the folded iPhone Duo](https://git.cafe/pingdotgg/t3code/commit/e0152b40aed2b23f4febbb1e70a3baa9e5abc385?format=markdown) — e0152b40aed2b23f4febbb1e70a3baa9e5abc385; Julius Marminge

- [fix\(mobile\): keep the arrangement safe-area content sized and themed](https://git.cafe/pingdotgg/t3code/commit/e4779fd19c54c4368e54f87ac163673f92e3a214?format=markdown) — e4779fd19c54c4368e54f87ac163673f92e3a214; Julius Marminge

- [fix\(mobile\): custom iPhone Duo overlays respect side insets and the fold](https://git.cafe/pingdotgg/t3code/commit/270b27e82c19858daff4536cd4150cde0f8298c8?format=markdown) — 270b27e82c19858daff4536cd4150cde0f8298c8; Julius Marminge

- [fix\(mobile\): a pull request opened from a thread keeps compose out of its bar](https://git.cafe/pingdotgg/t3code/commit/7153c10fce9f43da2b036ae398e0ea821f2ed391?format=markdown) — 7153c10fce9f43da2b036ae398e0ea821f2ed391; Julius Marminge

- [fix\(mobile\): a tab hidden through a fold keeps its list's search](https://git.cafe/pingdotgg/t3code/commit/420b39bb06eadbc385e4193d2e20841808085be6?format=markdown) — 420b39bb06eadbc385e4193d2e20841808085be6; Julius Marminge

- [fix\(mobile\): folding the Duo keeps the list's search](https://git.cafe/pingdotgg/t3code/commit/49a011be28a26249882b68fbd672d03d6ea98cd4?format=markdown) — 49a011be28a26249882b68fbd672d03d6ea98cd4; Julius Marminge

- [fix\(mobile\): Duo shows compose once, in the detail column's bar](https://git.cafe/pingdotgg/t3code/commit/2e49d3ce7f82efb9a777cf3eb26e824fea3dfbb3?format=markdown) — 2e49d3ce7f82efb9a777cf3eb26e824fea3dfbb3; Julius Marminge

- [fix\(mobile\): expanded Duo sidebar keeps a full search field at its bottom](https://git.cafe/pingdotgg/t3code/commit/35797376c68266e505594b491437fc763a970919?format=markdown) — 35797376c68266e505594b491437fc763a970919; Julius Marminge

- [fix\(mobile\): empty workspace drops New Task while the sidebar shows compose](https://git.cafe/pingdotgg/t3code/commit/063b2c30a9b39fed5b1d2e2be1c6251c6b1aa6b9?format=markdown) — 063b2c30a9b39fed5b1d2e2be1c6251c6b1aa6b9; Julius Marminge

- [fix\(mobile\): expanded Duo sidebar searches from its bottom toolbar](https://git.cafe/pingdotgg/t3code/commit/f43c62b3cc6dff75b74572594ffd07d22f996460?format=markdown) — f43c62b3cc6dff75b74572594ffd07d22f996460; Julius Marminge

- [fix\(mobile\): Duo workspace toolbars no longer draw under the tab bar](https://git.cafe/pingdotgg/t3code/commit/4ea1a00d44ebab48cb82543b7c6c0f362fa842ab?format=markdown) — 4ea1a00d44ebab48cb82543b7c6c0f362fa842ab; Julius Marminge

- [fix\(mobile\): folded Duo draws list actions, unfolded Duo loses the glass oval](https://git.cafe/pingdotgg/t3code/commit/8f36dfad12931a127ab4c053ce4a91fa53b3dc26?format=markdown) — 8f36dfad12931a127ab4c053ce4a91fa53b3dc26; Julius Marminge

- [fix\(mobile\): iPhone Duo keeps native toolbar groups and one Compose](https://git.cafe/pingdotgg/t3code/commit/ac938e922e22f1eeb5c7380f3e349a8d188c8974?format=markdown) — ac938e922e22f1eeb5c7380f3e349a8d188c8974; Julius Marminge

- [Merge commit from fork](https://git.cafe/pingdotgg/t3code/commit/a12d6ed9428d8e64d76ca86d178abbf564b57cee?format=markdown) — a12d6ed9428d8e64d76ca86d178abbf564b57cee; Julius Marminge

- [test\(web\): chat shortcut test types through the composer handle \(\#23126\)](https://git.cafe/pingdotgg/t3code/commit/bd6940beab9e04a843d711fca812067c22991ab4?format=markdown) — bd6940beab9e04a843d711fca812067c22991ab4; Julius Marminge

- [fix\(server\): sync pull request draft status changes \(\#22832\)](https://git.cafe/pingdotgg/t3code/commit/70e5e384dab96a1d1e4a253ee5a9415ed5d8ce30?format=markdown) — 70e5e384dab96a1d1e4a253ee5a9415ed5d8ce30; Yash Singh

- [fix\(server\): JetBrains IDEs open file links at the right column \(\#22826\)](https://git.cafe/pingdotgg/t3code/commit/1befc717f0b277c86a066e46598e60465e7f23c2?format=markdown) — 1befc717f0b277c86a066e46598e60465e7f23c2; Lev Poznyakov

- [fix\(web\): copy to machine clones the fork, not its upstream \(\#22492\)](https://git.cafe/pingdotgg/t3code/commit/0f74ff8e3a4189331fa762ff5d5da0626ecc5a61?format=markdown) — 0f74ff8e3a4189331fa762ff5d5da0626ecc5a61; AKolenda

- [fix\(opencode\): cancelled todos no longer keep the todo list running \(\#22938\)](https://git.cafe/pingdotgg/t3code/commit/2333f168845f853f9ef358d1c4e6cf75189f4e8b?format=markdown) — 2333f168845f853f9ef358d1c4e6cf75189f4e8b; MarcoDotIO

- [fix\(shared\): Azure DevOps repositories with a space in the name list their pull requests \(\#22782\)](https://git.cafe/pingdotgg/t3code/commit/855db968a7517914019d77e3c364fe2002f345d9?format=markdown) — 855db968a7517914019d77e3c364fe2002f345d9; Pavel Kroupa

- [fix\(web\): imported VS Code themes keep destructive buttons red \(\#21924\)](https://git.cafe/pingdotgg/t3code/commit/7845898c871bb0776eb8beda08a7b6907beca090?format=markdown) — 7845898c871bb0776eb8beda08a7b6907beca090; Louis Gollut

- [fix\(client\): usage limits skip disabled connections \(\#22936\)](https://git.cafe/pingdotgg/t3code/commit/1a44c40901a8a639d18947fcccf9707b9b9222d8?format=markdown) — 1a44c40901a8a639d18947fcccf9707b9b9222d8; M4NU5

- [fix\(shared\): recognize relative folder links with trailing slash \(\#22188\)](https://git.cafe/pingdotgg/t3code/commit/6de7da548d15d86e86f7550a9f1b402e924249dd?format=markdown) — 6de7da548d15d86e86f7550a9f1b402e924249dd; maco

- [fix\(web\): \.\./ file links outside the workspace open as host files \(\#22853\)](https://git.cafe/pingdotgg/t3code/commit/edce5f0e53e8f0a80ed0c6b553edfe7b6467bc14?format=markdown) — edce5f0e53e8f0a80ed0c6b553edfe7b6467bc14; Theo Browne

- [fix\(web\): right panel launcher letters open their surface instead of typing into the composer \(\#22898\)](https://git.cafe/pingdotgg/t3code/commit/86fa9e0a0c4e3cdadff15d25583978ec80a80834?format=markdown) — 86fa9e0a0c4e3cdadff15d25583978ec80a80834; Theo Browne

- [fix\(web\): quote comment box stays on screen for long code lines \(\#22149\)](https://git.cafe/pingdotgg/t3code/commit/159f2b8cc33a46c2dfed7d394ec8eb54bad03c03?format=markdown) — 159f2b8cc33a46c2dfed7d394ec8eb54bad03c03; Etan Heyman

- [fix\(web\): a Usage toggle shortcut now goes back instead of staying on Usage \(\#22905\)](https://git.cafe/pingdotgg/t3code/commit/bee9ce829bb72503e3eaebeeb7397ba96b9762d0?format=markdown) — bee9ce829bb72503e3eaebeeb7397ba96b9762d0; Theo Browne

- [fix\(web\): thread details PR merge uses the last selected merge method \(\#22399\)](https://git.cafe/pingdotgg/t3code/commit/a35066d9f21616056bc438c894573900ebe87352?format=markdown) — a35066d9f21616056bc438c894573900ebe87352; Tristan Knight

- [fix\(composer\): typing a price no longer opens the skill menu \(\#21519\)](https://git.cafe/pingdotgg/t3code/commit/1ee0241730ef5d2592347280118a2c77e8fb797c?format=markdown) — 1ee0241730ef5d2592347280118a2c77e8fb797c; MarcoDotIO

- [fix\(server\): pushes the remote refuses say why instead of a generic failure \(\#22904\)](https://git.cafe/pingdotgg/t3code/commit/fb7f08782b964b4137eef597052c99efc9039043?format=markdown) — fb7f08782b964b4137eef597052c99efc9039043; Theo Browne

- [fix\(server\): Forgejo and GitCafe pull requests link to their threads again \(\#22937\)](https://git.cafe/pingdotgg/t3code/commit/22b89ef061a65c89488761a09e05e3dffc9e6316?format=markdown) — 22b89ef061a65c89488761a09e05e3dffc9e6316; MarcoDotIO

- [fix\(server\): scheduled tasks no longer jump to the top when toggled \(\#22899\)](https://git.cafe/pingdotgg/t3code/commit/1b22228e52382a18c3b0721ad5154c74996b35ad?format=markdown) — 1b22228e52382a18c3b0721ad5154c74996b35ad; Theo Browne

- [fix\(web\): the branch toolbar and thread details panel stay cached while a reply streams \(\#23103\)](https://git.cafe/pingdotgg/t3code/commit/968dd51704441138559a3fe9c348719f2b11e0c6?format=markdown) — 968dd51704441138559a3fe9c348719f2b11e0c6; Julius Marminge

- [refactor\(web\): ChatView's timeline banners render in ChatBannerLane \(\#23101\)](https://git.cafe/pingdotgg/t3code/commit/a642ab2bd5d3dcc98217d60073ea0feb234c1aa1?format=markdown) — a642ab2bd5d3dcc98217d60073ea0feb234c1aa1; Julius Marminge

- [refactor\(web\): chat shortcuts live with the hooks that own their actions \(\#23097\)](https://git.cafe/pingdotgg/t3code/commit/764fff2efcb7123a0518c6b9b768f2f984d08b23?format=markdown) — 764fff2efcb7123a0518c6b9b768f2f984d08b23; Julius Marminge

- [refactor\(web\): ComposerControlsBar renders without a memo\(\) wrapper \(\#23093\)](https://git.cafe/pingdotgg/t3code/commit/b34f74cde0db0a272b5796a59e298e887a6c7b99?format=markdown) — b34f74cde0db0a272b5796a59e298e887a6c7b99; Julius Marminge

- [refactor\(web\): the composer send reads its own settings and draft instead of taking them from ChatView \(\#23095\)](https://git.cafe/pingdotgg/t3code/commit/beec3c8b30cecbd61383339cde42374282d1dee3?format=markdown) — beec3c8b30cecbd61383339cde42374282d1dee3; Julius Marminge

- [refactor\(web\): multiple-model sends live in their own hook \(\#23094\)](https://git.cafe/pingdotgg/t3code/commit/ac23b74df83d95f98419f3ade6103054a54daec1?format=markdown) — ac23b74df83d95f98419f3ade6103054a54daec1; Julius Marminge

- [refactor\(web\): proposed-plan follow-ups and implement-in-new-thread live in their own hooks \(\#23091\)](https://git.cafe/pingdotgg/t3code/commit/36d1e2fec5881a19811c35c8a804c46c4ca2cea7?format=markdown) — 36d1e2fec5881a19811c35c8a804c46c4ca2cea7; Julius Marminge

- [refactor\(web\): resuming an interrupted run lives in its own hook \(\#23087\)](https://git.cafe/pingdotgg/t3code/commit/5b715cc13cc5bcb3f82951be42888452c0f18557?format=markdown) — 5b715cc13cc5bcb3f82951be42888452c0f18557; Julius Marminge

- [fix\(composer\): mentions of files like \`posts\.$postId.tsx\` or \`\[id\]\.tsx\` stay chips \(\#22922\)](https://git.cafe/pingdotgg/t3code/commit/5c3721e20aa3c19d7ab414c40734752f9c053c90?format=markdown) — 5c3721e20aa3c19d7ab414c40734752f9c053c90; Theo Browne

- [fix\(web\): finished provider updates no longer leave a hidden spinner in the sidebar \(\#22912\)](https://git.cafe/pingdotgg/t3code/commit/38d993f3836c02aa17194ed05087be5f2b0f1010?format=markdown) — 38d993f3836c02aa17194ed05087be5f2b0f1010; Theo Browne

- [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

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