What's Changed
- refactor(server,relay): webhook capabilities live in services, not handlers by @juliusmarminge in #16232
- fix(server): a T3 Connect preferences save finishes even if the client disconnects by @juliusmarminge in #16266
- refactor(server): import service modules as namespaces, not aliased layers by @juliusmarminge in #16267
- feat(server): log how long PR watches stay quiet before they end by @t3dotgg in #16262
- feat(server,web): choose where new worktrees are created by @juliusmarminge in #16231
- perf(server): idle status polls and PR sweeps start fewer git processes by @t3dotgg in #16272
- perf(server): PR watches spend ~90% fewer GitHub points by checking a 1-point fingerprint first by @t3dotgg in #16270
- fix(pull-requests): PR detail reads no longer drain the GitHub quota by @t3dotgg in #16280
- refactor: layer variables are named layer or layerXyz by @juliusmarminge in #16282
- refactor(server): T3 Connect link capabilities live in a CloudLink service by @juliusmarminge in #16265
- fix(web): sidebar drag and drop no longer snaps back by @t3dotgg in #16291
- fix(web): inline HTML renders no longer trap the thread's scroll by @t3dotgg in #16283
- refactor(server): one module per service instead of Services/ and Layers/ folders by @juliusmarminge in #16295
- chore(review): configure CodeRabbit in TypeScript by @esthor in #16281
- docs: put the Effect and web UI review rules in the docs by @esthor in #16286
- chore(lint): require a reason on every lint and type-checker suppression by @esthor in #16294
- refactor(relay): import HookInboxObject once, as a namespace by @juliusmarminge in #16307
- fix(web): a rejected desktop-local credential is not retried every poll by @juliusmarminge in #16273
- feat(desktop): the renderer's bootstrap token rotates every 12 hours by @juliusmarminge in #16275
- fix(web): recover from a closed IndexedDB connection by @juliusmarminge in #16311
- fix(relay): stop forcing manual relay deploys by default by @juliusmarminge in #13563
- feat(relay): measure the managed tunnel backlog by @juliusmarminge in #13564
- feat(relay): clean up tunnels of hosts that never registered recovery by @juliusmarminge in #13565
- perf(relay): delete expired tunnels four at a time within a time budget by @juliusmarminge in #13566
- feat(connect): tell users when an idle tunnel was removed by @juliusmarminge in #13567
- docs(relay): add the legacy tunnel cleanup rollout runbook by @juliusmarminge in #13568
- chore(review): point CodeRabbit at the web UI conventions by @esthor in #16324
- chore(review): turn off CodeRabbit's docstring coverage check by @esthor in #16328
- refactor(server): CloudLink keeps only the link lifecycle; pure checks live beside it by @juliusmarminge in #16340
- refactor(server): CloudLink fails with its own errors; the connect routes map them to HTTP by @juliusmarminge in #16341
- refactor(server): replay guards stay in CloudLink by @juliusmarminge in #16349
- fix(server): forks no longer merge into their upstream repo's project group by @t3dotgg in #16353
- fix(server): stop the startup project sync from delaying the app window by @Mnigos in #14912
- fix(web): avoid blocking image preparation conversions by @Bil0000 in #13342
- fix(server): return partial workspace index on timeout by @Michel-Liao in #11500
- fix(server): probe project favicon candidates concurrently by @ishaanko in #12543
- fix(observability): a failing trace disk no longer stalls the server by @t3dotgg in #13758
- fix(server): status polling no longer locks the git index by @ahalekelly in #14718
- perf(shared): scan PATH once per command before spawning, not on every spawn by @SkiTee3000 in #12600
- fix(server): main's startup auto-pull test compiles again by @t3dotgg in #16357
- fix(server): project favicons stop being rescanned every minute by @t3dotgg in #16206
- fix(server): Claude limits load again for users with large transcript histories by @t3dotgg in #16358
- fix(server): caches and ids are written atomically by @juliusmarminge in #16242
- fix(server): one-shot initializers no longer race by @juliusmarminge in #16260
- fix(server): the PR cache sweep only removes real entry files by @juliusmarminge in #16285
- chore: keep one copy each of undici 8 and ws 8 by @juliusmarminge in #16211
- fix(shared): DrainableWorker keeps running after a failed item by @juliusmarminge in #16223
- fix(server): metrics count interrupted work on the monotonic clock by @juliusmarminge in #16207
- refactor(web): import connection storage as a namespace in its test by @juliusmarminge in #16315
- fix(contracts): trimmed IDs round-trip by @juliusmarminge in #16300
- fix(server): main's settings, keybindings and session tests compile again by @juliusmarminge in #16363
- chore(lint): catch known tags with Effect.catchTags by @esthor in #16361
- fix(observability): T3 Connect tracing stops at the relay boundary by @juliusmarminge in #16314
- fix(relay): error and deadline responses carry CORS headers by @juliusmarminge in #16253
- fix(web): bring back the live shimmer on work log rows by @juliusmarminge in #16372
- refactor: Effect code gets UUIDs and SHA-256 from Effect's Crypto by @esthor in #16377
- fix(relay): export traces through one tracer, one request span each by @juliusmarminge in #16382
- fix(server): Pi thread titles use linked PR context by @juliusmarminge in #16210
- fix(desktop): retry transient bearer bootstrap and degrade on session fetch failure by @jamesvillarrubia in #12919
- fix(server): avoid scanning completed history for pending secrets by @Yash-Singh1 in #16409
- fix(orchestration-v2): let Stop recover stalled runs by @Yash-Singh1 in #15442
- fix(release): resolve version-qualified catalog overrides by @Yash-Singh1 in #16411
- fix(web): type in front of bold that starts a composer line by @saphid in #13217
- fix(desktop): prevent browser screenshot filename collisions by @saphid in #14784
- fix(server): end clone options before the repository URL by @saphid in #14781
- fix(web): queued messages no longer split the composer notice stack by @tristanmanchester in #16400
- fix(server): reject invalid explicit Bitbucket repositories by @aravhawk in #15876
- fix: restore desktop and server typechecks on main by @Yash-Singh1 in #16415
- fix(shared): find versioned JetBrains macOS app bundles by @Sypher760-gif in #16246
- fix(server): OpenCode 2 threads get T3 Code's MCP tools by @nkoynov in #16142
- feat(preview): run the browser on the environment server by @maria-rcks in #15328
- fix: restore service references breaking ci by @maria-rcks in #16495
- fix(mcp): mark declared tool failures as errors by @maria-rcks in #15617
- fix(release): unblock nightly browser tests and cli builds by @maria-rcks in #16515
New Contributors
- @esthor made their first contribution in #16281
- @ahalekelly made their first contribution in #14718
- @SkiTee3000 made their first contribution in #12600
- @jamesvillarrubia made their first contribution in #12919
- @Sypher760-gif made their first contribution in #16246
- @nkoynov made their first contribution in #16142
Full Changelog: v0.0.46-nightly.20261005.2702...v0.0.46-nightly.20261006.2735