# Commit history · gitcafe/t3code

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

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

Visibility: public

Requested revision: 41d2535a90fdfb49b2b9a7a7c8fb4bce09c4170f

Requested commit: 41d2535a90fdfb49b2b9a7a7c8fb4bce09c4170f

- [feat\(relay\): clean up tunnels of hosts that never registered recovery \(\#13565\)](https://git.cafe/gitcafe/t3code/commit/41d2535a90fdfb49b2b9a7a7c8fb4bce09c4170f?format=markdown) — 41d2535a90fdfb49b2b9a7a7c8fb4bce09c4170f; Julius Marminge

- [feat\(relay\): measure the managed tunnel backlog \(\#13564\)](https://git.cafe/gitcafe/t3code/commit/7b32b2ca39892bc59e1d8cfff7aea2a8fbefa73a?format=markdown) — 7b32b2ca39892bc59e1d8cfff7aea2a8fbefa73a; Julius Marminge

- [fix\(relay\): stop forcing manual relay deploys by default \(\#13563\)](https://git.cafe/gitcafe/t3code/commit/18c1210810cbdb798d28edda1826fa4de91992d1?format=markdown) — 18c1210810cbdb798d28edda1826fa4de91992d1; Julius Marminge

- [fix\(web\): recover from a closed IndexedDB connection \(\#16311\)](https://git.cafe/gitcafe/t3code/commit/9c49228f5425f644cff9b41ae88ca564d40d79fa?format=markdown) — 9c49228f5425f644cff9b41ae88ca564d40d79fa; Julius Marminge

- [feat\(desktop\): the renderer's bootstrap token rotates every 12 hours \(\#16275\)](https://git.cafe/gitcafe/t3code/commit/5afe18eaf9d20c1633b4ec9177c6c9309a8f3d99?format=markdown) — 5afe18eaf9d20c1633b4ec9177c6c9309a8f3d99; Julius Marminge

- [fix\(web\): a rejected desktop-local credential is not retried every poll \(\#16273\)](https://git.cafe/gitcafe/t3code/commit/f36df1852423fef7f7855f86946c9f9a95c3429f?format=markdown) — f36df1852423fef7f7855f86946c9f9a95c3429f; Julius Marminge

- [refactor\(relay\): import HookInboxObject once, as a namespace \(\#16307\)](https://git.cafe/gitcafe/t3code/commit/8bd7745f0af918582807326d90e58d59324bb2a6?format=markdown) — 8bd7745f0af918582807326d90e58d59324bb2a6; Julius Marminge

- [chore\(lint\): require a reason on every lint and type-checker suppression \(\#16294\)](https://git.cafe/gitcafe/t3code/commit/31d0c8a4f47ead36c9a63ac4d3bf27b55c05095a?format=markdown) — 31d0c8a4f47ead36c9a63ac4d3bf27b55c05095a; Erik Thorelli

- [docs: put the Effect and web UI review rules in the docs \(\#16286\)](https://git.cafe/gitcafe/t3code/commit/6262e5f50081845bb247e5af2fc81b068c8ae893?format=markdown) — 6262e5f50081845bb247e5af2fc81b068c8ae893; Erik Thorelli

- [chore\(review\): configure CodeRabbit in TypeScript \(\#16281\)](https://git.cafe/gitcafe/t3code/commit/ea54be7f853aca37981f60958d66039196f13a0c?format=markdown) — ea54be7f853aca37981f60958d66039196f13a0c; Erik Thorelli

- [refactor\(server\): one module per service instead of Services/ and Layers/ folders \(\#16295\)](https://git.cafe/gitcafe/t3code/commit/3d17862e58554460b0baae7bae0e03d36b8ce5ab?format=markdown) — 3d17862e58554460b0baae7bae0e03d36b8ce5ab; Julius Marminge

- [fix\(web\): inline HTML renders no longer trap the thread's scroll \(\#16283\)](https://git.cafe/gitcafe/t3code/commit/64275ae39653379e63f49f87be021c190fd20e81?format=markdown) — 64275ae39653379e63f49f87be021c190fd20e81; Theo Browne

- [fix\(web\): sidebar drag and drop no longer snaps back \(\#16291\)](https://git.cafe/gitcafe/t3code/commit/db4d0a8e6e49d92a9efcd8d6f82bbed10e2bd748?format=markdown) — db4d0a8e6e49d92a9efcd8d6f82bbed10e2bd748; Theo Browne

- [refactor\(server\): T3 Connect link capabilities live in a CloudLink service \(\#16265\)](https://git.cafe/gitcafe/t3code/commit/9422e2ee12fd3e3bfdf6fe5c377672badf7b20ca?format=markdown) — 9422e2ee12fd3e3bfdf6fe5c377672badf7b20ca; Julius Marminge

- [refactor: layer variables are named layer or layerXyz \(\#16282\)](https://git.cafe/gitcafe/t3code/commit/ecfdda5fa804582066c1aa62afea419677c24883?format=markdown) — ecfdda5fa804582066c1aa62afea419677c24883; Julius Marminge

- [fix\(pull-requests\): PR detail reads no longer drain the GitHub quota \(\#16280\)](https://git.cafe/gitcafe/t3code/commit/4df84a7d03ff084ff4c6dd7aef54623984690fb7?format=markdown) — 4df84a7d03ff084ff4c6dd7aef54623984690fb7; Theo Browne

- [perf\(server\): PR watches spend \~90% fewer GitHub points by checking a 1-point fingerprint first \(\#16270\)](https://git.cafe/gitcafe/t3code/commit/758dc290e900e35958d37fec41fed4a357ad60fa?format=markdown) — 758dc290e900e35958d37fec41fed4a357ad60fa; Theo Browne

- [perf\(server\): idle status polls and PR sweeps start fewer git processes \(\#16272\)](https://git.cafe/gitcafe/t3code/commit/dcbaf05279984187b96c99edc2416abf91e77b96?format=markdown) — dcbaf05279984187b96c99edc2416abf91e77b96; Theo Browne

- [feat\(server,web\): choose where new worktrees are created \(\#16231\)](https://git.cafe/gitcafe/t3code/commit/1024941575067f68d909c6b98f56b02edac25b37?format=markdown) — 1024941575067f68d909c6b98f56b02edac25b37; Julius Marminge

- [feat\(server\): log how long PR watches stay quiet before they end \(\#16262\)](https://git.cafe/gitcafe/t3code/commit/fc4ecc835e6d54eb411c333d737f2c4881884338?format=markdown) — fc4ecc835e6d54eb411c333d737f2c4881884338; Theo Browne

- [refactor\(server\): import service modules as namespaces, not aliased layers \(\#16267\)](https://git.cafe/gitcafe/t3code/commit/6302d66f7773ee43d198155d2cfc22d9d66dbbe0?format=markdown) — 6302d66f7773ee43d198155d2cfc22d9d66dbbe0; Julius Marminge

- [fix\(server\): a T3 Connect preferences save finishes even if the client disconnects \(\#16266\)](https://git.cafe/gitcafe/t3code/commit/ee6991ad502c7c8979ab47b6a8fc645498f5b4ce?format=markdown) — ee6991ad502c7c8979ab47b6a8fc645498f5b4ce; Julius Marminge

- [refactor\(server,relay\): webhook capabilities live in services, not handlers \(\#16232\)](https://git.cafe/gitcafe/t3code/commit/7a047d0136de606accc8270dce64f2260529c120?format=markdown) — 7a047d0136de606accc8270dce64f2260529c120; Julius Marminge

- [fix\(relay\): releasing a tunnel that still has a connector no longer 500s \(\#16250\)](https://git.cafe/gitcafe/t3code/commit/cfa4f765ec05950a032b6c1cf9cdfff0c2391545?format=markdown) — cfa4f765ec05950a032b6c1cf9cdfff0c2391545; Julius Marminge

- [fix\(server\): finished outbox rows and old PR cache files are pruned \(\#16247\)](https://git.cafe/gitcafe/t3code/commit/ca952677321abf9f3762ae4bb0129454e5a63955?format=markdown) — ca952677321abf9f3762ae4bb0129454e5a63955; Julius Marminge

- [fix\(server\): ACP mode states with null descriptions are no longer dropped \(\#16218\)](https://git.cafe/gitcafe/t3code/commit/27ab45593fdcaffe718c1fa54dcbb2df4bd769a2?format=markdown) — 27ab45593fdcaffe718c1fa54dcbb2df4bd769a2; Julius Marminge

- [feat\(web\): see and stop pull request watches in the thread details card \(\#16235\)](https://git.cafe/gitcafe/t3code/commit/3da82d5d384a5f45e3e4a9c5bdb8336eb54e49ff?format=markdown) — 3da82d5d384a5f45e3e4a9c5bdb8336eb54e49ff; Theo Browne

- [feat: agents ask the user for a secret through a private card \(\#15907\)](https://git.cafe/gitcafe/t3code/commit/9f61ba674115f3ddb67a8a1fbe0a0ac8839551bf?format=markdown) — 9f61ba674115f3ddb67a8a1fbe0a0ac8839551bf; Julius Marminge

- [chore\(relay\): match Alchemy to the PS-80 Postgres cluster \(\#16228\)](https://git.cafe/gitcafe/t3code/commit/25d5c7cacb99bc50056edc0ea8d201eac31cfdf4?format=markdown) — 25d5c7cacb99bc50056edc0ea8d201eac31cfdf4; Julius Marminge

- [feat: agents can show HTML pages inline in threads \(\#15968\)](https://git.cafe/gitcafe/t3code/commit/677d1527c3d96b90b2294d9a0aed7d8c8874b29b?format=markdown) — 677d1527c3d96b90b2294d9a0aed7d8c8874b29b; Theo Browne

- [perf: cheaper shell refreshes, one copy of Codex streaming text, no MCP wait polling \(\#15033\)](https://git.cafe/gitcafe/t3code/commit/c138163c8cc39d4a98b2d3d796bcef183013bac5?format=markdown) — c138163c8cc39d4a98b2d3d796bcef183013bac5; Theo Browne

- [feat: new branches use the shorter t3/ prefix \(\#16220\)](https://git.cafe/gitcafe/t3code/commit/2afe87ea4bb94f4dbbd1660a556cbffefd7498a2?format=markdown) — 2afe87ea4bb94f4dbbd1660a556cbffefd7498a2; Theo Browne

- [fix\(server\): delegation sees a fixed provider without the app open \(\#16219\)](https://git.cafe/gitcafe/t3code/commit/cbb731beb36db2330c9a2632b11354315658ea21?format=markdown) — cbb731beb36db2330c9a2632b11354315658ea21; Theo Browne

- [fix\(server\): PR watches stop burning GitHub's rate limit and giving up \(\#16208\)](https://git.cafe/gitcafe/t3code/commit/9e5229b47f7af66e2f88447a49f8ea7f00c734c6?format=markdown) — 9e5229b47f7af66e2f88447a49f8ea7f00c734c6; Theo Browne

- [feat\(relay,server,web,mobile\): opt-in to hold webhooks while offline \(\#15487\)](https://git.cafe/gitcafe/t3code/commit/f33b060cafc96d7c3229744315c230a3b8d1f631?format=markdown) — f33b060cafc96d7c3229744315c230a3b8d1f631; Julius Marminge

- [feat\(web\): create webhook automations and inspect their deliveries \(\#15088\)](https://git.cafe/gitcafe/t3code/commit/ea4b44343d3c8f71cf49a72a266d00eac7389435?format=markdown) — ea4b44343d3c8f71cf49a72a266d00eac7389435; Julius Marminge

- [feat\(mobile\): create and copy webhook automations \(\#15087\)](https://git.cafe/gitcafe/t3code/commit/aee889b0e043fdc652e48850698d08ebc563d5bc?format=markdown) — aee889b0e043fdc652e48850698d08ebc563d5bc; Julius Marminge

- [feat\(relay\): forward webhook requests to the environment's tunnel \(\#15086\)](https://git.cafe/gitcafe/t3code/commit/b070e52d3e6b49c98117249e5b3f0d46edce173a?format=markdown) — b070e52d3e6b49c98117249e5b3f0d46edce173a; Julius Marminge

- [feat\(server\): scheduled tasks can run on a webhook \(\#15085\)](https://git.cafe/gitcafe/t3code/commit/7dfb86a32be6ec064dd8988e1a3b44cc046ff958?format=markdown) — 7dfb86a32be6ec064dd8988e1a3b44cc046ff958; Julius Marminge

- [fix\(server\): PR sync waits out a GitHub rate limit pause instead of failing every PR \(\#16203\)](https://git.cafe/gitcafe/t3code/commit/54b6b667f340c03132e9fc2cb2c3d657571442a2?format=markdown) — 54b6b667f340c03132e9fc2cb2c3d657571442a2; Theo Browne

- [chore\(deps\): bump cursor sdk and astro to clear vulnerable transitives \(\#16214\)](https://git.cafe/gitcafe/t3code/commit/3d2a98f99be10b7621a368f4e05f36a853ac48d1?format=markdown) — 3d2a98f99be10b7621a368f4e05f36a853ac48d1; Julius Marminge

- [fix\(threads\): threads watching a PR stay in Working instead of bouncing to the inbox \(\#16204\)](https://git.cafe/gitcafe/t3code/commit/207f6a10b05cbdaee6fc650e915ba09dbe39d428?format=markdown) — 207f6a10b05cbdaee6fc650e915ba09dbe39d428; Theo Browne

- [docs\(mcp\): thread tools reach threads in any project \(\#15947\)](https://git.cafe/gitcafe/t3code/commit/f5eb25071c042c4a729ddae9fd07bd81804907da?format=markdown) — f5eb25071c042c4a729ddae9fd07bd81804907da; Theo Browne

- [fix: tool screenshots show as images, not base64 text \(\#16199\)](https://git.cafe/gitcafe/t3code/commit/5eb87730871ac6125266b48b98d067de00a19ec7?format=markdown) — 5eb87730871ac6125266b48b98d067de00a19ec7; Theo Browne

- [fix: a failed DPoP key load and a fresh maintenance read are no longer cached \(\#15500\)](https://git.cafe/gitcafe/t3code/commit/2a68a777afda95aa23538b9954c5a15221ed2857?format=markdown) — 2a68a777afda95aa23538b9954c5a15221ed2857; Julius Marminge

- [fix\(server\): PR watch reports a required check that first appears already passed \(\#15804\)](https://git.cafe/gitcafe/t3code/commit/404e229f22ef2dc7e42074d5379d5c554dd2c083?format=markdown) — 404e229f22ef2dc7e42074d5379d5c554dd2c083; Scott Norteman

- [fix\(clients\): dropped connections say why in the client trace \(\#16200\)](https://git.cafe/gitcafe/t3code/commit/5cebd3b814ae171df83fb81db3036fbbca2a660e?format=markdown) — 5cebd3b814ae171df83fb81db3036fbbca2a660e; Theo Browne

- [feat\(source-control\): omit agent credits from PR merge messages \(\#16192\)](https://git.cafe/gitcafe/t3code/commit/24238fee321e2c6bc711832b8cf3698b1f6b30ca?format=markdown) — 24238fee321e2c6bc711832b8cf3698b1f6b30ca; Julius Marminge

- [fix\(server\): PR watch wakes the agent when a bot edits its review comment \(\#15415\)](https://git.cafe/gitcafe/t3code/commit/21eb9a421aff7a8fbe044b1a34bb3e364fb94a68?format=markdown) — 21eb9a421aff7a8fbe044b1a34bb3e364fb94a68; Guillermo Casanova

- [fix\(server\): name the cause of a failed git command \(\#8645\)](https://git.cafe/gitcafe/t3code/commit/f973b1d7d5cd7ffb4dd3c1c61cc0caece09fd1a6?format=markdown) — f973b1d7d5cd7ffb4dd3c1c61cc0caece09fd1a6; Muhammad Waleed

- [fix\(server\): use current SQL import in thread stop tests](https://git.cafe/gitcafe/t3code/commit/73fd3c1ab0d8b2f6add7bbf8c498b9a2a87278ff?format=markdown) — 73fd3c1ab0d8b2f6add7bbf8c498b9a2a87278ff; Julius Marminge

- [feat: native /goal for Codex and Claude, with goal status in the UI \(\#15592\)](https://git.cafe/gitcafe/t3code/commit/a172e1c4e8098c7d8dbe538a375ecc69faf9514d?format=markdown) — a172e1c4e8098c7d8dbe538a375ecc69faf9514d; Theo Browne

- [fix\(server\): Stop also stops delegated tasks and pull request watches \(\#16002\)](https://git.cafe/gitcafe/t3code/commit/f32c23cf1aa9ff177224e93c239165adc67798c0?format=markdown) — f32c23cf1aa9ff177224e93c239165adc67798c0; Theo Browne

- [ci: run the transfer report job on Blacksmith \(\#16178\)](https://git.cafe/gitcafe/t3code/commit/2bffcc52f77bd6ff8be8e91be7a09f455eecbe07?format=markdown) — 2bffcc52f77bd6ff8be8e91be7a09f455eecbe07; Julius Marminge

- [fix\(web\): wrap full status text in composer hover details \(\#16158\)](https://git.cafe/gitcafe/t3code/commit/5b613de175dd2567ae806907440ef83f6cd7c2a4?format=markdown) — 5b613de175dd2567ae806907440ef83f6cd7c2a4; Utkarsh Patil

- [fix\(web\): match subagent timestamp fonts to chat \(\#16151\)](https://git.cafe/gitcafe/t3code/commit/039ddf1143d7dba0e25d0b1b7c8ed0cd3e19f588?format=markdown) — 039ddf1143d7dba0e25d0b1b7c8ed0cd3e19f588; Wout Stiens

- [chore\(refs\): sync Effect and Alchemy references to 4.0.1 and beta.80 \(\#16170\)](https://git.cafe/gitcafe/t3code/commit/6f9cea00ae967f38fa3cdc9c07f92031806f4264?format=markdown) — 6f9cea00ae967f38fa3cdc9c07f92031806f4264; Julius Marminge

- [fix\(server\): worktree threads survive a local branch named t3code \(\#16167\)](https://git.cafe/gitcafe/t3code/commit/b12b3f706d1257b79c69c34699babb6834a72b34?format=markdown) — b12b3f706d1257b79c69c34699babb6834a72b34; Julius Marminge

- [chore\(deps\): upgrade Effect to stable 4.0.1 \(\#16138\)](https://git.cafe/gitcafe/t3code/commit/194c73f3f991558ca540ef6fe0ce75223bbe87a7?format=markdown) — 194c73f3f991558ca540ef6fe0ce75223bbe87a7; Julius Marminge

- [fix\(server\): honor submodule settings when creating worktrees \(\#15594\)](https://git.cafe/gitcafe/t3code/commit/3e6b45028ceec5820dacb37dc3852470ebdc9411?format=markdown) — 3e6b45028ceec5820dacb37dc3852470ebdc9411; Rahul Mishra

- [feat\(acp\): support local provider commands \(\#16021\)](https://git.cafe/gitcafe/t3code/commit/9d029a1df25126745dd70ac561ff25d3f8fbac42?format=markdown) — 9d029a1df25126745dd70ac561ff25d3f8fbac42; maria

- [feat\(server\): bump Antigravity ACP agent to 1.3.0 \(\#15746\)](https://git.cafe/gitcafe/t3code/commit/4dbc0129c244d5869d7598a22f8d9386cca17884?format=markdown) — 4dbc0129c244d5869d7598a22f8d9386cca17884; Dipangshu Roy

- [perf\(mobile\): defer audio recorder creation until dictation \(\#15248\)](https://git.cafe/gitcafe/t3code/commit/c71ca063dfcd8c2e3dcb2bd92adbb2180cbbece3?format=markdown) — c71ca063dfcd8c2e3dcb2bd92adbb2180cbbece3; Julius Marminge

- [perf\(mobile\): reduce shell cache encoding work \(\#15096\)](https://git.cafe/gitcafe/t3code/commit/1c33f3b2b2976b7f4e26698ed69c549de687a97e?format=markdown) — 1c33f3b2b2976b7f4e26698ed69c549de687a97e; Julius Marminge

- [Removed an unused helper from the Android push payload builder \(\#16116\)](https://git.cafe/gitcafe/t3code/commit/31f9d832f4f019ff565beafbd6bb18451fa7039d?format=markdown) — 31f9d832f4f019ff565beafbd6bb18451fa7039d; Kriday Dave

- [refactor\(contracts\): project icons decode forward-compatibly instead of encoding a fallback \(\#16118\)](https://git.cafe/gitcafe/t3code/commit/5c03ced3be8444567db4b50a474619bc5e63db98?format=markdown) — 5c03ced3be8444567db4b50a474619bc5e63db98; Julius Marminge

- [feat\(contracts\): clients tolerate union members they don't know yet \(\#15951\)](https://git.cafe/gitcafe/t3code/commit/ca3f9738c39c3502dd2258aae872f971080969ef?format=markdown) — ca3f9738c39c3502dd2258aae872f971080969ef; Julius Marminge

- [fix\(threads\): stop pull request watches when settling \(\#16095\)](https://git.cafe/gitcafe/t3code/commit/51f7f77f87318a5329d3bab15d513fda5654200b?format=markdown) — 51f7f77f87318a5329d3bab15d513fda5654200b; Bilal Bakr

- [fix\(mobile\): make the routes list match the other settings rows \(\#15958\)](https://git.cafe/gitcafe/t3code/commit/68802a48f9a8f7f7db5ca4d605bdc818be62a804?format=markdown) — 68802a48f9a8f7f7db5ca4d605bdc818be62a804; Julius Marminge

- [fix\(web\): show fast mode beside reasoning as text \(\#16069\)](https://git.cafe/gitcafe/t3code/commit/e22c8804346d4bd45a733803eda826e04e3bbd74?format=markdown) — e22c8804346d4bd45a733803eda826e04e3bbd74; maria

- [fix\(desktop\): bound preview inspector retention and record renderer identity \(\#16032\)](https://git.cafe/gitcafe/t3code/commit/7b797f2b90918e7bae0f710dcf24018b8b0843dc?format=markdown) — 7b797f2b90918e7bae0f710dcf24018b8b0843dc; maria

- [fix\(mobile\): back from a finished subagent in the feed returns to its parent \(\#15844\)](https://git.cafe/gitcafe/t3code/commit/1604ccc9d79f5270fb8e14d60664184bf142c4cb?format=markdown) — 1604ccc9d79f5270fb8e14d60664184bf142c4cb; AKolenda

- [perf\(prs\): share concurrent github routing metadata probes \(\#15853\)](https://git.cafe/gitcafe/t3code/commit/1a3f7ad5085606463a602bd756ca9c04d106fffe?format=markdown) — 1a3f7ad5085606463a602bd756ca9c04d106fffe; maria

- [fix\(prs\): queue fast actions and close batches by dragging \(\#15851\)](https://git.cafe/gitcafe/t3code/commit/7ffa2184a7cfc78d870bf6cbfa4064c51868aef2?format=markdown) — 7ffa2184a7cfc78d870bf6cbfa4064c51868aef2; maria

- [fix\(server\): subagents no longer inherit parent pull-request links \(\#14918\)](https://git.cafe/gitcafe/t3code/commit/7812230572f2d7e042d8d14ada2381fc71377560?format=markdown) — 7812230572f2d7e042d8d14ada2381fc71377560; Simone

- [fix\(server\): Stop ends a Codex command after its thread was settled \(\#15546\)](https://git.cafe/gitcafe/t3code/commit/cf3e714b0f58e29c8fa8660db50d2187e3263b65?format=markdown) — cf3e714b0f58e29c8fa8660db50d2187e3263b65; Theo Browne

- [fix\(mobile\): upgrade Uniwind and remove local patch \(\#14597\)](https://git.cafe/gitcafe/t3code/commit/250e052f44dd313b658abebc707242a7b25be340?format=markdown) — 250e052f44dd313b658abebc707242a7b25be340; Hubert Bieszczad

- [feat\(web\): shell commands in the timeline are syntax highlighted \(\#15037\)](https://git.cafe/gitcafe/t3code/commit/2a778f7a6e7b5f9403c5dbff2c2f4a9ce26c0ade?format=markdown) — 2a778f7a6e7b5f9403c5dbff2c2f4a9ce26c0ade; scratchyone

- [fix\(desktop\): V2 imports stashed prompts and drafts from the V1 profile \(\#15072\)](https://git.cafe/gitcafe/t3code/commit/c40873762863abe34e2e784c518d81cbc08f6662?format=markdown) — c40873762863abe34e2e784c518d81cbc08f6662; Julius Marminge

- [feat\(server\): T3 MCP tools take explicit thread and project targets \(\#15219\)](https://git.cafe/gitcafe/t3code/commit/06e627448bc1ee58487c1a2a9d6bf8d5ef479af3?format=markdown) — 06e627448bc1ee58487c1a2a9d6bf8d5ef479af3; Julius Marminge

- [refactor\(server\): share one keyed lock that releases idle keys \(\#15577\)](https://git.cafe/gitcafe/t3code/commit/37de6cbde65c7cf9ba90a2557c232e63b7e16988?format=markdown) — 37de6cbde65c7cf9ba90a2557c232e63b7e16988; Julius Marminge

- [fix\(server\): queue background notifications during active tools \(\#15892\)](https://git.cafe/gitcafe/t3code/commit/1beb0355d05bbe4a780b238e3138f0a8ed99df5f?format=markdown) — 1beb0355d05bbe4a780b238e3138f0a8ed99df5f; Yash Singh

- [fix\(mobile\): a message that fails to send now says why in the thread \(\#15807\)](https://git.cafe/gitcafe/t3code/commit/a1d9d72aefc2a388ea3915956e9d84d279c87da7?format=markdown) — a1d9d72aefc2a388ea3915956e9d84d279c87da7; shivam

- [fix\(dev\): write bootstrap warnings directly to stderr \(\#15865\)](https://git.cafe/gitcafe/t3code/commit/de09c7566c71a9c01a554b2f163fa50e3e15bfe5?format=markdown) — de09c7566c71a9c01a554b2f163fa50e3e15bfe5; maria

- [fix\(server\): drop the duplicate Option import that breaks main CI \(\#15847\)](https://git.cafe/gitcafe/t3code/commit/1e2ecbd9758830669684b494d4398f626b0576e0?format=markdown) — 1e2ecbd9758830669684b494d4398f626b0576e0; Julius Marminge

- [fix\(dev\): worktree setup never deletes a real env file \(\#15845\)](https://git.cafe/gitcafe/t3code/commit/f8a308fbc90e89cd5f8d41b7fb169a03343bd9b5?format=markdown) — f8a308fbc90e89cd5f8d41b7fb169a03343bd9b5; Julius Marminge

- [fix\(mobile\): back from an agent's thread returns to its parent \(\#15068\)](https://git.cafe/gitcafe/t3code/commit/01f894e23e031ef32c25a15b518a94f20defea6f?format=markdown) — 01f894e23e031ef32c25a15b518a94f20defea6f; AKolenda

- [fix\(web\): center icons in thread details icon buttons \(\#15669\)](https://git.cafe/gitcafe/t3code/commit/ad5178a31aac09c93159ea152daf00720ca56358?format=markdown) — ad5178a31aac09c93159ea152daf00720ca56358; Rakshith Bhat

- [fix\(server\): recover Linux runtime directory for device hub \(\#12402\)](https://git.cafe/gitcafe/t3code/commit/f729e0ebfe7578860585a77ddde8f008e30c2351?format=markdown) — f729e0ebfe7578860585a77ddde8f008e30c2351; maria

- [fix\(server\): expand home-relative media paths \(\#15618\)](https://git.cafe/gitcafe/t3code/commit/f4153a75a4b04e14bd45d1b578af4d1d63cc84e5?format=markdown) — f4153a75a4b04e14bd45d1b578af4d1d63cc84e5; maria

- [perf\(web\): validate monospace fonts when selected \(\#15642\)](https://git.cafe/gitcafe/t3code/commit/bc2748241776066c532f3312a26f1756d9740f9c?format=markdown) — bc2748241776066c532f3312a26f1756d9740f9c; maria

- [revert\(chat\): remove automatic file-link repair \(\#15824\)](https://git.cafe/gitcafe/t3code/commit/801ca76ed6a5b9d5d6a40f6c1ba231d9ffb3757e?format=markdown) — 801ca76ed6a5b9d5d6a40f6c1ba231d9ffb3757e; maria

- [fix\(server\): share MCP tool presentation across providers \(\#15475\)](https://git.cafe/gitcafe/t3code/commit/ec20db4a5a27de45f69f64ca05d17ec1bd96644d?format=markdown) — ec20db4a5a27de45f69f64ca05d17ec1bd96644d; Julius Marminge

- [feat\(clients\): learn an environment's LAN and tailnet addresses \(\#15468\)](https://git.cafe/gitcafe/t3code/commit/745c225f92401ba0950770fa7c3ec67a7067dbeb?format=markdown) — 745c225f92401ba0950770fa7c3ec67a7067dbeb; Julius Marminge

- [feat\(clients\): reach one environment over several routes \(\#15467\)](https://git.cafe/gitcafe/t3code/commit/979ca66cedf10d685c7486da1929297c3693fe43?format=markdown) — 979ca66cedf10d685c7486da1929297c3693fe43; Julius Marminge

- [fix\(cli\): reject accidental server launches \(\#15795\)](https://git.cafe/gitcafe/t3code/commit/fe417dff4cdc149d6873bb4fbaaa388731628d0b?format=markdown) — fe417dff4cdc149d6873bb4fbaaa388731628d0b; maria

- [fix\(server\): Claude threads no longer get stuck after background commands \(\#15770\)](https://git.cafe/gitcafe/t3code/commit/efecd3cf8bcec3d1891b5f5a27dc2f6d797c6448?format=markdown) — efecd3cf8bcec3d1891b5f5a27dc2f6d797c6448; eimexdev

- [revert\(web\): remove automatic compaction before resume \(\#15771\)](https://git.cafe/gitcafe/t3code/commit/2188bdd8b5c0251f40daebdb66647dd0150cf076?format=markdown) — 2188bdd8b5c0251f40daebdb66647dd0150cf076; maria

- [feat\(release\): include nightly changelogs in Discord announcements \(\#15754\)](https://git.cafe/gitcafe/t3code/commit/b4381985db55755ff15340d118160c14006ced13?format=markdown) — b4381985db55755ff15340d118160c14006ced13; Exotic

- [fix\(mobile\): Keep the last line of iOS markdown replies visible \(\#15737\)](https://git.cafe/gitcafe/t3code/commit/484459f0a9633e56214a7cd35b790c96f94190b4?format=markdown) — 484459f0a9633e56214a7cd35b790c96f94190b4; Mike Olson

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