| 11 days ago | Julius Marminge | | refactor(server): CloudLink keeps only the link lifecycle; pure checks live beside it (#16340) |
| 11 days ago | Erik Thorelli | | chore(review): turn off CodeRabbit's docstring coverage check (#16328) |
| 11 days ago | Erik Thorelli | | chore(review): point CodeRabbit at the web UI conventions (#16324) |
| 11 days ago | Julius Marminge | | docs(relay): add the legacy tunnel cleanup rollout runbook (#13568) |
| 11 days ago | Julius Marminge | | feat(connect): tell users when an idle tunnel was removed (#13567) |
| 11 days ago | Julius Marminge | | perf(relay): delete expired tunnels four at a time within a time budget (#13566) |
| 11 days ago | Julius Marminge | | feat(relay): clean up tunnels of hosts that never registered recovery (#13565) |
| 11 days ago | Julius Marminge | | feat(relay): measure the managed tunnel backlog (#13564) |
| 11 days ago | Julius Marminge | | fix(relay): stop forcing manual relay deploys by default (#13563) |
| 11 days ago | Julius Marminge | | fix(web): recover from a closed IndexedDB connection (#16311) |
| 11 days ago | Julius Marminge | | feat(desktop): the renderer's bootstrap token rotates every 12 hours (#16275) |
| 11 days ago | Julius Marminge | | fix(web): a rejected desktop-local credential is not retried every poll (#16273) |
| 11 days ago | Julius Marminge | | refactor(relay): import HookInboxObject once, as a namespace (#16307) |
| 11 days ago | Erik Thorelli | | chore(lint): require a reason on every lint and type-checker suppression (#16294) |
| 11 days ago | Erik Thorelli | | docs: put the Effect and web UI review rules in the docs (#16286) |
| 11 days ago | Erik Thorelli | | chore(review): configure CodeRabbit in TypeScript (#16281) |
| 11 days ago | Julius Marminge | | refactor(server): one module per service instead of Services/ and Layers/ folders (#16295) |
| 11 days ago | Theo Browne | | fix(web): inline HTML renders no longer trap the thread's scroll (#16283) |
| 11 days ago | Theo Browne | | fix(web): sidebar drag and drop no longer snaps back (#16291) |
| 11 days ago | Julius Marminge | | refactor(server): T3 Connect link capabilities live in a CloudLink service (#16265) |
| 11 days ago | Julius Marminge | | refactor: layer variables are named layer or layerXyz (#16282) |
| 11 days ago | Theo Browne | | fix(pull-requests): PR detail reads no longer drain the GitHub quota (#16280) |
| 11 days ago | Theo Browne | | perf(server): PR watches spend ~90% fewer GitHub points by checking a 1-point fingerprint first (#16270) |
| 11 days ago | Theo Browne | | perf(server): idle status polls and PR sweeps start fewer git processes (#16272) |
| 11 days ago | Julius Marminge | | feat(server,web): choose where new worktrees are created (#16231) |
| 11 days ago | Theo Browne | | feat(server): log how long PR watches stay quiet before they end (#16262) |
| 11 days ago | Julius Marminge | | refactor(server): import service modules as namespaces, not aliased layers (#16267) |
| 11 days ago | Julius Marminge | | fix(server): a T3 Connect preferences save finishes even if the client disconnects (#16266) |
| 11 days ago | Julius Marminge | | refactor(server,relay): webhook capabilities live in services, not handlers (#16232) |
| 11 days ago | Julius Marminge | | fix(relay): releasing a tunnel that still has a connector no longer 500s (#16250) |
| 11 days ago | Julius Marminge | | fix(server): finished outbox rows and old PR cache files are pruned (#16247) |
| 11 days ago | Julius Marminge | | fix(server): ACP mode states with null descriptions are no longer dropped (#16218) |
| 11 days ago | Theo Browne | | feat(web): see and stop pull request watches in the thread details card (#16235) |
| 11 days ago | Julius Marminge | | feat: agents ask the user for a secret through a private card (#15907) |
| 12 days ago | Julius Marminge | | chore(relay): match Alchemy to the PS-80 Postgres cluster (#16228) |
| 12 days ago | Theo Browne | | feat: agents can show HTML pages inline in threads (#15968) |
| 12 days ago | Theo Browne | | perf: cheaper shell refreshes, one copy of Codex streaming text, no MCP wait polling (#15033) |
| 12 days ago | Theo Browne | | feat: new branches use the shorter t3/ prefix (#16220) |
| 12 days ago | Theo Browne | | fix(server): delegation sees a fixed provider without the app open (#16219) |
| 12 days ago | Theo Browne | | fix(server): PR watches stop burning GitHub's rate limit and giving up (#16208) |
| 12 days ago | Julius Marminge | | feat(relay,server,web,mobile): opt-in to hold webhooks while offline (#15487) |
| 12 days ago | Julius Marminge | | feat(web): create webhook automations and inspect their deliveries (#15088) |
| 12 days ago | Julius Marminge | | feat(mobile): create and copy webhook automations (#15087) |
| 12 days ago | Julius Marminge | | feat(relay): forward webhook requests to the environment's tunnel (#15086) |
| 12 days ago | Julius Marminge | | feat(server): scheduled tasks can run on a webhook (#15085) |
| 12 days ago | Theo Browne | | fix(server): PR sync waits out a GitHub rate limit pause instead of failing every PR (#16203) |
| 12 days ago | Julius Marminge | | chore(deps): bump cursor sdk and astro to clear vulnerable transitives (#16214) |
| 12 days ago | Theo Browne | | fix(threads): threads watching a PR stay in Working instead of bouncing to the inbox (#16204) |
| 12 days ago | Theo Browne | | docs(mcp): thread tools reach threads in any project (#15947) |
| 12 days ago | Theo Browne | | fix: tool screenshots show as images, not base64 text (#16199) |
|