# Commit history · gitcafe/t3code

[View on GitCafe](https://git.cafe/gitcafe/t3code/commits/ff9eb8bd0c8e71f98969a58d5789889e07b57c8b)

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

Visibility: public

Requested revision: ff9eb8bd0c8e71f98969a58d5789889e07b57c8b

Requested commit: ff9eb8bd0c8e71f98969a58d5789889e07b57c8b

- [feat\(web\): projectless threads show their machine in the sidebar \(\#17022\)](https://git.cafe/gitcafe/t3code/commit/ff9eb8bd0c8e71f98969a58d5789889e07b57c8b?format=markdown) — ff9eb8bd0c8e71f98969a58d5789889e07b57c8b; oliver

- [feat\(web\): quote chips show what you said about the quote \(\#15703\)](https://git.cafe/gitcafe/t3code/commit/12865b4a73c23bb402717d5f592dcd954ed196e5?format=markdown) — 12865b4a73c23bb402717d5f592dcd954ed196e5; oliver

- [perf\(mobile\): highlight source files in small batches that keep grammar state \(\#16729\)](https://git.cafe/gitcafe/t3code/commit/33afd5a5aa361890c9ce22479e8f52f6b18248aa?format=markdown) — 33afd5a5aa361890c9ce22479e8f52f6b18248aa; Julius Marminge

- [perf\(mobile\): reuse the settled sort when settled rows are unchanged \(\#16369\)](https://git.cafe/gitcafe/t3code/commit/b402f5fc65f6f4554266dea385a7da7ff353f028?format=markdown) — b402f5fc65f6f4554266dea385a7da7ff353f028; Julius Marminge

- [fix\(mobile\): update the iOS Git header menu when status changes \(\#16330\)](https://git.cafe/gitcafe/t3code/commit/833a03afe32b2f332ab19ce72c0e0dc3cf72c341?format=markdown) — 833a03afe32b2f332ab19ce72c0e0dc3cf72c341; Julius Marminge

- [fix\(mobile\): refresh Git status after reconnect \(\#16329\)](https://git.cafe/gitcafe/t3code/commit/4fec120b75bb397bda3c09b7317f79c1d26811c0?format=markdown) — 4fec120b75bb397bda3c09b7317f79c1d26811c0; Julius Marminge

- [fix\(mobile\): stop Git sheet refresh loop \(\#16305\)](https://git.cafe/gitcafe/t3code/commit/5c2798d47eb41d5d659b8d2189781fcb06536a5f?format=markdown) — 5c2798d47eb41d5d659b8d2189781fcb06536a5f; Julius Marminge

- [fix\(mobile\): collect UI runtime garbage on iOS memory warnings \(\#16296\)](https://git.cafe/gitcafe/t3code/commit/c001e191a19db32199ad75ccea219f729f9db7c4?format=markdown) — c001e191a19db32199ad75ccea219f729f9db7c4; Julius Marminge

- [perf\(mobile\): skip impossible thread-key lookups \(\#16263\)](https://git.cafe/gitcafe/t3code/commit/6c1ce06996979fcfe120ec8c8cb4f78a5c8a7365?format=markdown) — 6c1ce06996979fcfe120ec8c8cb4f78a5c8a7365; Julius Marminge

- [perf\(mobile\): reduce move-menu index allocations \(\#16256\)](https://git.cafe/gitcafe/t3code/commit/7873504964c3008ed2a87ada7be62d611e7a281a?format=markdown) — 7873504964c3008ed2a87ada7be62d611e7a281a; Julius Marminge

- [perf\(mobile\): remove unused Home project sorting \(\#16177\)](https://git.cafe/gitcafe/t3code/commit/6eed953a060213630af0d7e3cd9a664bd85f7ced?format=markdown) — 6eed953a060213630af0d7e3cd9a664bd85f7ced; Julius Marminge

- [perf\(mobile\): skip showcase subscriptions in normal builds \(\#16131\)](https://git.cafe/gitcafe/t3code/commit/6651aaab38c6814ed7bba3e805a1ec7a01870b55?format=markdown) — 6651aaab38c6814ed7bba3e805a1ec7a01870b55; Julius Marminge

- [perf\(mobile\): reuse encoded rows in shell cache saves \(\#16129\)](https://git.cafe/gitcafe/t3code/commit/8a1fc4149ae7b41e7d3d93f1b51dd9aeb38c4282?format=markdown) — 8a1fc4149ae7b41e7d3d93f1b51dd9aeb38c4282; Julius Marminge

- [fix\(mobile\): skip move indexes for empty and single-thread sections \(\#16115\)](https://git.cafe/gitcafe/t3code/commit/12a4c057f3d6880c611630ccdc0c8c7f2cd23f72?format=markdown) — 12a4c057f3d6880c611630ccdc0c8c7f2cd23f72; Julius Marminge

- [fix\(mobile\): stop refreshing Git status on streamed thread updates \(\#15893\)](https://git.cafe/gitcafe/t3code/commit/70eeb3996d557a2e553f817c8e123bf79bbd378c?format=markdown) — 70eeb3996d557a2e553f817c8e123bf79bbd378c; Julius Marminge

- [fix\(web\): Usage breadcrumb stays centered on small viewports \(\#15552\)](https://git.cafe/gitcafe/t3code/commit/85a41391e9625d760f5bb2294834c38f42bbf5b8?format=markdown) — 85a41391e9625d760f5bb2294834c38f42bbf5b8; oliver

- [fix\(web\): command palette scrollbar no longer clipped at the top \(\#17035\)](https://git.cafe/gitcafe/t3code/commit/647d8affa78c848c2a55c3e00ed14af9a9eca58e?format=markdown) — 647d8affa78c848c2a55c3e00ed14af9a9eca58e; oliver

- [fix\(web\): PR commit menu no longer stretches across the window \(\#15560\)](https://git.cafe/gitcafe/t3code/commit/98b5e1bef3c8d933d7ad826f837086a506a3732f?format=markdown) — 98b5e1bef3c8d933d7ad826f837086a506a3732f; oliver

- [fix\(web\): PR code toolbar no longer overlaps in narrow panels \(\#15561\)](https://git.cafe/gitcafe/t3code/commit/ed27eb724b4d7963b59de8fd2e51d6b877004163?format=markdown) — ed27eb724b4d7963b59de8fd2e51d6b877004163; oliver

- [fix\(mobile\): restore file viewer insets and glass header \(\#17073\)](https://git.cafe/gitcafe/t3code/commit/e803242d936af3e052757d59ab32bc7c4fcc2390?format=markdown) — e803242d936af3e052757d59ab32bc7c4fcc2390; Julius Marminge

- [fix\(mobile\): pause hidden home thread list updates \(\#15705\)](https://git.cafe/gitcafe/t3code/commit/65404eb75de9233c9d1068ddfd09bacfc3b0465b?format=markdown) — 65404eb75de9233c9d1068ddfd09bacfc3b0465b; Julius Marminge

- [perf\(mobile\): pause elapsed-time timers on hidden thread screens \(\#15397\)](https://git.cafe/gitcafe/t3code/commit/eb17e0db2bd075e71b4015dc57588e7f838cbcdc?format=markdown) — eb17e0db2bd075e71b4015dc57588e7f838cbcdc; Julius Marminge

- [perf\(mobile\): omit duplicated turn items from bounded thread snapshots \(\#15385\)](https://git.cafe/gitcafe/t3code/commit/28f5516a9acfcfc1e203487e78869a406fd23b76?format=markdown) — 28f5516a9acfcfc1e203487e78869a406fd23b76; Julius Marminge

- [fix\(web\): PR file stats ignore the hide-whitespace toggle \(\#16162\)](https://git.cafe/gitcafe/t3code/commit/6053a7878d24e5fd596d2b417ed94964a4b9c1c6?format=markdown) — 6053a7878d24e5fd596d2b417ed94964a4b9c1c6; oliver

- [fix\(server\): a message sent during a rollback no longer undoes it \(\#17079\)](https://git.cafe/gitcafe/t3code/commit/c28cd905572e2a28934a6229d88bcf2975963032?format=markdown) — c28cd905572e2a28934a6229d88bcf2975963032; Theo Browne

- [fix\(server\): held queued wakes no longer keep delegated tasks running \(\#17028\)](https://git.cafe/gitcafe/t3code/commit/0bfd9dd19d0c9418a936190525ec8f4c4fdae09b?format=markdown) — 0bfd9dd19d0c9418a936190525ec8f4c4fdae09b; Julius Marminge

- [fix\(web\): PR timeline no longer shifts when its scrollbar appears \(\#15588\)](https://git.cafe/gitcafe/t3code/commit/b24f0fbba09d8623c896081b4ff70aa7190c8fda?format=markdown) — b24f0fbba09d8623c896081b4ff70aa7190c8fda; oliver

- [fix\(web\): PR file headers keep the file name in narrow panels \(\#15562\)](https://git.cafe/gitcafe/t3code/commit/2b7fa212a89edda7aad8f73fc3b4afd5b56c442c?format=markdown) — 2b7fa212a89edda7aad8f73fc3b4afd5b56c442c; oliver

- [refactor\(web\): PR loading skeleton shares the detail panel's layout \(\#15583\)](https://git.cafe/gitcafe/t3code/commit/843c593ab2dfe432abfba7b928292f3f8e9c7d44?format=markdown) — 843c593ab2dfe432abfba7b928292f3f8e9c7d44; oliver

- [fix\(web\): messages with quotes or links no longer collapse when short \(\#16624\)](https://git.cafe/gitcafe/t3code/commit/6f83358ae6d85b5dee7d3280e645e0e9a0aeff62?format=markdown) — 6f83358ae6d85b5dee7d3280e645e0e9a0aeff62; oliver

- [fix\(server,web,mobile\): thread links reference the thread id, not a baked title \(\#17017\)](https://git.cafe/gitcafe/t3code/commit/0f09627a111f7e9adc22c256c725565672676f1a?format=markdown) — 0f09627a111f7e9adc22c256c725565672676f1a; Julius Marminge

- [fix\(server\): opening a long thread no longer blocks the server for a second \(\#17029\)](https://git.cafe/gitcafe/t3code/commit/04ad17425a80484bf323a7d5076bd477a9499119?format=markdown) — 04ad17425a80484bf323a7d5076bd477a9499119; Dara Adedeji

- [fix\(server\): replaying a command no longer freezes the server \(\#17041\)](https://git.cafe/gitcafe/t3code/commit/9fba2093e50f208c52d9041c70a793296e311477?format=markdown) — 9fba2093e50f208c52d9041c70a793296e311477; Dara Adedeji

- [perf\(mobile\): show the cached thread list sooner and stop the freeze after it \(\#16713\)](https://git.cafe/gitcafe/t3code/commit/f9e16b3f66476ad1e213152708c9aa8b035085a3?format=markdown) — f9e16b3f66476ad1e213152708c9aa8b035085a3; Julius Marminge

- [chore\(review\): remove the custom Approvability check \(\#17018\)](https://git.cafe/gitcafe/t3code/commit/83a82a46b0631234ac85748b912566d6f4b1dee3?format=markdown) — 83a82a46b0631234ac85748b912566d6f4b1dee3; Erik Thorelli

- [refactor\(server\): GitHub rate limits read the response headers \(\#16986\)](https://git.cafe/gitcafe/t3code/commit/d720210996a514368ba99f4860063110033d93fa?format=markdown) — d720210996a514368ba99f4860063110033d93fa; Julius Marminge

- [refactor\(server\): GitHub source control reads GitHubApi directly \(\#16982\)](https://git.cafe/gitcafe/t3code/commit/42d92ec59775c187af69071c81b2b91180810bdd?format=markdown) — 42d92ec59775c187af69071c81b2b91180810bdd; Julius Marminge

- [refactor\(server\): GitHub GraphQL batches use variables and share one pager \(\#16960\)](https://git.cafe/gitcafe/t3code/commit/a21ac5fb153e3bf418ccd2a4abef2787c241813c?format=markdown) — a21ac5fb153e3bf418ccd2a4abef2787c241813c; Julius Marminge

- [refactor\(server\): GitHub services are named for the API they call, not gh \(\#16967\)](https://git.cafe/gitcafe/t3code/commit/08b1222d0bae670433c275ec70165c7b5048726f?format=markdown) — 08b1222d0bae670433c275ec70165c7b5048726f; Julius Marminge

- [feat\(web\): find in diffs with Cmd\+F \(\#14623\)](https://git.cafe/gitcafe/t3code/commit/14fe0158ede3d964f183e281f9fec225d30a6b32?format=markdown) — 14fe0158ede3d964f183e281f9fec225d30a6b32; Julius Marminge

- [fix\(settings\): provider updates show live progress instead of a bare spinner \(\#16958\)](https://git.cafe/gitcafe/t3code/commit/ff3a04a8ebaaf6bb74b8b5b996013b82e044c700?format=markdown) — ff3a04a8ebaaf6bb74b8b5b996013b82e044c700; shivam

- [fix\(web\): cancelling a new citation no longer leaves a stray space \(\#16828\)](https://git.cafe/gitcafe/t3code/commit/3143335fc3a568cbbb5174764961889272135cb9?format=markdown) — 3143335fc3a568cbbb5174764961889272135cb9; Afonso Ferreira

- [fix\(web\): center project monograms in settled rows \(\#16841\)](https://git.cafe/gitcafe/t3code/commit/46dd0949053ae387e785c5e9801725a9ccc28de1?format=markdown) — 46dd0949053ae387e785c5e9801725a9ccc28de1; Afonso Ferreira

- [feat\(web\): block-level Markdown in the rich text composer \(\#14677\)](https://git.cafe/gitcafe/t3code/commit/300f7f9d45ff19c01bc987dbf1c3bc3e9a3a59ee?format=markdown) — 300f7f9d45ff19c01bc987dbf1c3bc3e9a3a59ee; Chris Deeming

- [feat\(clients\): live row shows the agent's latest thought \(\#16284\)](https://git.cafe/gitcafe/t3code/commit/95ccbf406626a8a80fa545777a6388bdf5153086?format=markdown) — 95ccbf406626a8a80fa545777a6388bdf5153086; Theo Browne

- [fix\(web\): C\#, Java, PHP and 11 other languages get file icons \(\#16974\)](https://git.cafe/gitcafe/t3code/commit/abbf5d5bcd045cdb6baf16128ef54d4df3a7f3fd?format=markdown) — abbf5d5bcd045cdb6baf16128ef54d4df3a7f3fd; Julius Marminge

- [fix\(web\): Copy MCP URL shows up for environments reached over plain http \(\#16909\)](https://git.cafe/gitcafe/t3code/commit/7ac5ec6b15593f5b682fe73b483bc8e24de76665?format=markdown) — 7ac5ec6b15593f5b682fe73b483bc8e24de76665; Dara Adedeji

- [fix\(web\): simplify workspace card rows \(\#16823\)](https://git.cafe/gitcafe/t3code/commit/7f3628e4153d5be4a241c4d54f73a6d7087014ce?format=markdown) — 7f3628e4153d5be4a241c4d54f73a6d7087014ce; Bilal Bakr

- [fix\(web\): fast typing no longer scrambles text when type-to-focus kicks in \(\#14595\)](https://git.cafe/gitcafe/t3code/commit/26285ab80513260d1ff29d2c3fbe18f21990cb62?format=markdown) — 26285ab80513260d1ff29d2c3fbe18f21990cb62; Otavio Salvador

- [fix\(server\): unload Codex threads left idle on the shared app-server \(\#16917\)](https://git.cafe/gitcafe/t3code/commit/eba0521563946a0834af881465d3e1ff7a4ca2f1?format=markdown) — eba0521563946a0834af881465d3e1ff7a4ca2f1; Rhys Sullivan

- [fix\(server\): missing project folders no longer log favicon warnings \(\#16757\)](https://git.cafe/gitcafe/t3code/commit/85489611b5477050d7d777a4195c1c50ac0ce6be?format=markdown) — 85489611b5477050d7d777a4195c1c50ac0ce6be; Yordis Prieto

- [fix\(desktop\): sign-in and captchas work again in desktop browser tabs \(\#16939\)](https://git.cafe/gitcafe/t3code/commit/538329603352173afe3ae9f4586a4f772c0f3a4f?format=markdown) — 538329603352173afe3ae9f4586a4f772c0f3a4f; Julius Marminge

- [fix\(mobile\): Android composer picker scrolls past the first four rows \(\#15856\)](https://git.cafe/gitcafe/t3code/commit/8a92ebe413dd9e4569724c94e74a1ed54675eff7?format=markdown) — 8a92ebe413dd9e4569724c94e74a1ed54675eff7; shivam

- [feat\(mobile\): adopt v5 navigation and native iPad columns \(\#16733\)](https://git.cafe/gitcafe/t3code/commit/468ade30495c450ae4e731483187f77bc3c5e42b?format=markdown) — 468ade30495c450ae4e731483187f77bc3c5e42b; Julius Marminge

- [fix\(web\): show live names in thread-read activity \(\#13140\)](https://git.cafe/gitcafe/t3code/commit/a9fb6a80635c77a1d4fd988e0018059e13628eff?format=markdown) — a9fb6a80635c77a1d4fd988e0018059e13628eff; Bilal Bakr

- [feat\(desktop\): install the t3 command from Settings \(\#16683\)](https://git.cafe/gitcafe/t3code/commit/0678e4e23d8675ef88f9ac08e1ae90cfe7d6ef2e?format=markdown) — 0678e4e23d8675ef88f9ac08e1ae90cfe7d6ef2e; Julius Marminge

- [fix\(desktop\): setup prompts name a t3 that runs on desktop installs \(\#16676\)](https://git.cafe/gitcafe/t3code/commit/73e87f683ae1455feb663481f1fa588f01b5784b?format=markdown) — 73e87f683ae1455feb663481f1fa588f01b5784b; Julius Marminge

- [fix\(server\): Claude 5-series models always run 1M context \(\#16908\)](https://git.cafe/gitcafe/t3code/commit/9f48092ec95dd9eab78931601de95be0107a930c?format=markdown) — 9f48092ec95dd9eab78931601de95be0107a930c; Julius Marminge

- [fix\(web\): iPhone Duo folds animate, center on the hinge, and keep the phone's orientation \(\#16885\)](https://git.cafe/gitcafe/t3code/commit/ba0ea3d152150f399827d36a5b4b86c5bbda2d7f?format=markdown) — ba0ea3d152150f399827d36a5b4b86c5bbda2d7f; Gabriel De Andrade

- [feat\(models\): add Claude Haiku 5.5 and retire Sonnet 5 and Opus 5 to legacy \(\#16903\)](https://git.cafe/gitcafe/t3code/commit/588d32e22b10932404856d9bdd9f2f39c7e38070?format=markdown) — 588d32e22b10932404856d9bdd9f2f39c7e38070; Julius Marminge

- [fix\(server\): Claude prompts no longer hang on a uuid the session already holds \(\#16897\)](https://git.cafe/gitcafe/t3code/commit/f570bd21663f56ce94c41829d3b7d72886e25a34?format=markdown) — f570bd21663f56ce94c41829d3b7d72886e25a34; Julius Marminge

- [fix\(server\): main typechecks again after a test used renamed helpers \(\#16895\)](https://git.cafe/gitcafe/t3code/commit/41985b44ff1b3a353ab805a31d4e4810842cbf2b?format=markdown) — 41985b44ff1b3a353ab805a31d4e4810842cbf2b; Julius Marminge

- [fix\(server\): Windows worktrees with long paths no longer fail or strand \(\#14917\)](https://git.cafe/gitcafe/t3code/commit/4ce6a51a4c4bbc9a2fc9e371ecb446851f953482?format=markdown) — 4ce6a51a4c4bbc9a2fc9e371ecb446851f953482; Roger Maxwell

- [fix\(server\): free worktrees for terminal thread statuses \(\#15150\)](https://git.cafe/gitcafe/t3code/commit/e0201d3ab51b4593eff3c41d03ab9c9b2dc07471?format=markdown) — e0201d3ab51b4593eff3c41d03ab9c9b2dc07471; ANSH SINGH

- [fix\(server\): merged-worktree cleanup removes worktrees after squash merges \(\#14847\)](https://git.cafe/gitcafe/t3code/commit/93e864042cf066f4cdb3efe65dbefaaf0d168894?format=markdown) — 93e864042cf066f4cdb3efe65dbefaaf0d168894; Tristan Knight

- [fix\(server\): worktree cleanup no longer deletes files hidden by showUntrackedFiles=no \(\#15834\)](https://git.cafe/gitcafe/t3code/commit/d9068d38099fe5cb4f3fed4cb5455fee878db491?format=markdown) — d9068d38099fe5cb4f3fed4cb5455fee878db491; Dara Adedeji

- [fix\(web\): onboarding Continue no longer locks on computers that won't connect \(\#16887\)](https://git.cafe/gitcafe/t3code/commit/db46c42744874ca123bc170a90c1faa312f20119?format=markdown) — db46c42744874ca123bc170a90c1faa312f20119; Julius Marminge

- [fix\(server\): a refused Claude turn no longer throws away its session \(\#16287\)](https://git.cafe/gitcafe/t3code/commit/87c366b1206b13701fbcc38e459d457f0f9da2df?format=markdown) — 87c366b1206b13701fbcc38e459d457f0f9da2df; Dara Adedeji

- [fix\(mobile\): hide threads from switched-off environments \(\#16886\)](https://git.cafe/gitcafe/t3code/commit/8d564a3e5c77d283994119eca82881f8c37a4a4d?format=markdown) — 8d564a3e5c77d283994119eca82881f8c37a4a4d; Charlie J

- [fix\(server\): a background Claude subagent's work shows while its parent is idle \(\#16486\)](https://git.cafe/gitcafe/t3code/commit/a8c480241836a7f6b79862e4504f37801cda6cde?format=markdown) — a8c480241836a7f6b79862e4504f37801cda6cde; Vantrongs

- [feat: MCP apps render and run inline in threads \(\#16236\)](https://git.cafe/gitcafe/t3code/commit/4d976d1fc233d3aa971fa7dcbf2e7316bfa3ac72?format=markdown) — 4d976d1fc233d3aa971fa7dcbf2e7316bfa3ac72; Julius Marminge

- [fix\(clients\): running subagent cards stay visible after their parent turn settles \(\#16878\)](https://git.cafe/gitcafe/t3code/commit/6ecb82dc42c4c721fd2c03c92316ee5361306cdb?format=markdown) — 6ecb82dc42c4c721fd2c03c92316ee5361306cdb; Julius Marminge

- [fix\(web\): replace Lineage timers with Stop on hover \(\#16791\)](https://git.cafe/gitcafe/t3code/commit/521f5b5a5682b18f2d59cf95226fc203cd314240?format=markdown) — 521f5b5a5682b18f2d59cf95226fc203cd314240; Bilal Bakr

- [feat\(server,web,mobile\): agents see snooze state and link to threads \(\#16782\)](https://git.cafe/gitcafe/t3code/commit/611132c171f3a821bd2e32f22261135cef6330ac?format=markdown) — 611132c171f3a821bd2e32f22261135cef6330ac; Theo Browne

- [fix\(server\): threads settle as soon as a client sees their PR merge \(\#16761\)](https://git.cafe/gitcafe/t3code/commit/cd41c4ada0c70cc2eec95ecd7266f3dab010c58c?format=markdown) — cd41c4ada0c70cc2eec95ecd7266f3dab010c58c; Theo Browne

- [perf\(server\): background branch lookups share one GitHub query per sweep \(\#16760\)](https://git.cafe/gitcafe/t3code/commit/c93080b0a3bf4faffb375169c5ec06adce05eb2f?format=markdown) — c93080b0a3bf4faffb375169c5ec06adce05eb2f; Theo Browne

- [fix\(server\): status refresh no longer pegs CPU in repos with thousands of untracked files \(\#16771\)](https://git.cafe/gitcafe/t3code/commit/10395bcc59707302c1476e19186532ff5a9d3557?format=markdown) — 10395bcc59707302c1476e19186532ff5a9d3557; Theo Browne

- [fix\(server\): stop storing tool image bytes no client reads \(\#16652\)](https://git.cafe/gitcafe/t3code/commit/b77108bc41506ad7ba28839d9a8e04ba79fe340b?format=markdown) — b77108bc41506ad7ba28839d9a8e04ba79fe340b; Derek Trimm

- [fix\(server\): settled threads stop polling their pull requests \(\#16762\)](https://git.cafe/gitcafe/t3code/commit/453e596da7e98d973e3853a5c2728681dedf363b?format=markdown) — 453e596da7e98d973e3853a5c2728681dedf363b; Theo Browne

- [feat\(web\): old Claude threads compact on send instead of stacking notices \(\#16631\)](https://git.cafe/gitcafe/t3code/commit/655dfbe8ba87f0f9ef1d6fad83c20634634653aa?format=markdown) — 655dfbe8ba87f0f9ef1d6fad83c20634634653aa; Theo Browne

- [feat\(server\): run a project action when a worktree thread settles \(\#16290\)](https://git.cafe/gitcafe/t3code/commit/079e4bccdcffc56c54bd69523ed77c006553ea21?format=markdown) — 079e4bccdcffc56c54bd69523ed77c006553ea21; Theo Browne

- [fix: composer picks up new project skills without a server restart \(\#16750\)](https://git.cafe/gitcafe/t3code/commit/a1830915ecf70e3ad4fbe8efb15ae9f18517eb54?format=markdown) — a1830915ecf70e3ad4fbe8efb15ae9f18517eb54; Julius Marminge

- [fix\(mcp\): agent HTML pages stop painting slab backgrounds \(\#16752\)](https://git.cafe/gitcafe/t3code/commit/4b063a042ec93418a196c020b852459f57e17b57?format=markdown) — 4b063a042ec93418a196c020b852459f57e17b57; Theo Browne

- [fix\(web\): thread details card gives titles room to read \(\#16746\)](https://git.cafe/gitcafe/t3code/commit/f60367b8cb5e4a7e5e12dd01dc3889618151b1be?format=markdown) — f60367b8cb5e4a7e5e12dd01dc3889618151b1be; Theo Browne

- [docs: connect Claude Code, Codex, ChatGPT and bots over MCP \(\#16741\)](https://git.cafe/gitcafe/t3code/commit/0f4f02abb6ab5428c06a7e4b6c76b3ec84c62498?format=markdown) — 0f4f02abb6ab5428c06a7e4b6c76b3ec84c62498; Julius Marminge

- [feat\(server\): hosted agents like ChatGPT can sign in to the T3 MCP server \(\#16718\)](https://git.cafe/gitcafe/t3code/commit/10f39eb9ac80c9a4b7f5097575dd2addc3b6f631?format=markdown) — 10f39eb9ac80c9a4b7f5097575dd2addc3b6f631; Julius Marminge

- [fix\(auth\): keep old clients connected across scope changes \(\#10298\)](https://git.cafe/gitcafe/t3code/commit/365aa87982a4d81cc8e0c085e8d1a40ca7daecdc?format=markdown) — 365aa87982a4d81cc8e0c085e8d1a40ca7daecdc; Julius Marminge

- [feat\(auth\): allow passive terminal observation \(\#9791\)](https://git.cafe/gitcafe/t3code/commit/cc41482df0232454af0cc5ac2f1afd984e342134?format=markdown) — cc41482df0232454af0cc5ac2f1afd984e342134; Julius Marminge

- [feat\(auth\): separate diagnostics and usage permissions \(\#9790\)](https://git.cafe/gitcafe/t3code/commit/57b2418d4fbab56290ff4cb861dcd0a7d0f5ef63?format=markdown) — 57b2418d4fbab56290ff4cb861dcd0a7d0f5ef63; Julius Marminge

- [feat\(auth\): separate browser preview control permissions \(\#9789\)](https://git.cafe/gitcafe/t3code/commit/7175edcff4f250b583ebed8877e27e36dc48411e?format=markdown) — 7175edcff4f250b583ebed8877e27e36dc48411e; Julius Marminge

- [feat\(auth\): separate filesystem read and write permissions \(\#9788\)](https://git.cafe/gitcafe/t3code/commit/321c6f9d26e9240f6ed3d2a3a8f7fc11344c2f17?format=markdown) — 321c6f9d26e9240f6ed3d2a3a8f7fc11344c2f17; Julius Marminge

- [feat\(auth\): separate source control write permissions \(\#9787\)](https://git.cafe/gitcafe/t3code/commit/2eda8ac6a3151b70b8ee49b438bfb6fcd835802e?format=markdown) — 2eda8ac6a3151b70b8ee49b438bfb6fcd835802e; Julius Marminge

- [feat\(auth\): separate environment administration permissions \(\#9786\)](https://git.cafe/gitcafe/t3code/commit/28ce9d1c1751d70c869e3de3287b96d5e28fc845?format=markdown) — 28ce9d1c1751d70c869e3de3287b96d5e28fc845; Julius Marminge

- [fix\(auth\): preserve explicitly granted pairing scopes \(\#9785\)](https://git.cafe/gitcafe/t3code/commit/e9c3d950f023130791d8ac5fe7aa0992e3430738?format=markdown) — e9c3d950f023130791d8ac5fe7aa0992e3430738; Julius Marminge

- [fix\(pi\): preserve provider identity in discovered models \(\#16661\)](https://git.cafe/gitcafe/t3code/commit/bfec2387b8102975c84690f99be0f5f834fd0cbe?format=markdown) — bfec2387b8102975c84690f99be0f5f834fd0cbe; maria

- [fix\(web\): preserve bare anchor placeholders in markdown \(\#16637\)](https://git.cafe/gitcafe/t3code/commit/5886bd8f19c8d4b01d7a0b36ad62a9d35f02552d?format=markdown) — 5886bd8f19c8d4b01d7a0b36ad62a9d35f02552d; maria

- [fix\(web\): keep workspace options when expanding lineage \(\#16635\)](https://git.cafe/gitcafe/t3code/commit/847c53df0126a225fb1a64d4bda9acfffa2b68ed?format=markdown) — 847c53df0126a225fb1a64d4bda9acfffa2b68ed; maria

- [fix\(web\): iPhone Duo fold controls follow the phone's orientation \(\#16630\)](https://git.cafe/gitcafe/t3code/commit/2991331515ed5b7e4df0751e5119fa04954e803a?format=markdown) — 2991331515ed5b7e4df0751e5119fa04954e803a; Gabriel De Andrade

- [fix\(server\): recover a deleted tunnel when Cloudflare says "Tunnel not found" \(\#16648\)](https://git.cafe/gitcafe/t3code/commit/740bda40c92e1ded65dd2b65ef7c583357b1d258?format=markdown) — 740bda40c92e1ded65dd2b65ef7c583357b1d258; Julius Marminge

- [fix\(relay\): a host restarting onto a deleted tunnel gets a new one \(\#16649\)](https://git.cafe/gitcafe/t3code/commit/c4481b9b07d9108d3aa93494a0ec5dd28ed8fd80?format=markdown) — c4481b9b07d9108d3aa93494a0ec5dd28ed8fd80; Julius Marminge

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