Repository navigation
refactor(source-control): Azure DevOps lives in @t3tools/source-control-azure-devops - #17592
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a bounded Azure DevOps package extraction with existing implementation and tests moved intact. Server wiring, service dependencies, and discovery ordering preserve the prior runtime path without introducing schema, deployment, security, or default-behavior changes. You can add or adjust custom eligibility rules. Learn more. |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
…ol-azure-devops The az CLI client, repository provider, pull request CLI and provider, JSON decoding and diff reconstruction move into their own package and reach the server only through SourceControlHost. Its driver joins BUILT_IN_SOURCE_CONTROL_DRIVERS, so neither registry names Azure DevOps. The built-in list is typed by the union of its drivers' requirements, and discovery keeps its existing host order. The diff dependency moves from apps/server to the package, its only user. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… DevOps provider Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
d876f7f to
caa3dfd
Compare
Dismissing prior approval to re-evaluate caa3dfd
## What's Changed * chore(deps): upgrade Effect to 4.0.2 by @juliusmarminge in pingdotgg/t3code#17571 * fix(devices): recover stalled video without losing simulator input by @juliusmarminge in pingdotgg/t3code#17566 * fix(web): keep checkout stable while pr actions load by @maria-rcks in pingdotgg/t3code#16625 * fix(mobile): show waiting thread status by @maria-rcks in pingdotgg/t3code#16693 * feat(web): add parent thread breadcrumb navigation by @maria-rcks in pingdotgg/t3code#16666 * fix(server): restart inactivity after snoozed threads wake by @maria-rcks in pingdotgg/t3code#16674 * feat(desktop): passkeys in the in-app browser on macOS by @juliusmarminge in pingdotgg/t3code#16952 * fix(client): load earlier turns works for MCP threads over T3 Connect by @juliusmarminge in pingdotgg/t3code#17599 * refactor(client): sign relay request URLs built from the HttpApi contract by @juliusmarminge in pingdotgg/t3code#17602 * refactor(source-control): add @t3tools/source-control-core by @juliusmarminge in pingdotgg/t3code#17573 * refactor(source-control): Forgejo lives in @t3tools/source-control-forgejo by @juliusmarminge in pingdotgg/t3code#17581 * refactor(source-control): Azure DevOps lives in @t3tools/source-control-azure-devops by @juliusmarminge in pingdotgg/t3code#17592 * refactor(source-control): GitLab lives in @t3tools/source-control-gitlab by @juliusmarminge in pingdotgg/t3code#17594 * refactor(source-control): Bitbucket lives in @t3tools/source-control-bitbucket by @juliusmarminge in pingdotgg/t3code#17597 * refactor(source-control): GitHub lives in @t3tools/source-control-github by @juliusmarminge in pingdotgg/t3code#17607 * refactor(usage): transcript readers come from their drivers by @juliusmarminge in pingdotgg/t3code#17576 * refactor(usage): OpenCode usage comes from provider-opencode by @juliusmarminge in pingdotgg/t3code#17577 * refactor(usage): Cursor account usage comes from provider-cursor by @juliusmarminge in pingdotgg/t3code#17578 * refactor(usage): Antigravity usage is a reader on its driver by @juliusmarminge in pingdotgg/t3code#17579 * refactor(usage): usage readers use Effect FileSystem and SqlClient by @juliusmarminge in pingdotgg/t3code#17615 * fix(web): composer context strip pads both edges evenly by @limineol in pingdotgg/t3code#17562 * test(usage): v4 cache upgrade test waits for the migrated cache write by @Mnigos in pingdotgg/t3code#17553 * feat(mobile): support Duo in the shared iOS app by @juliusmarminge in pingdotgg/t3code#12648 * refactor(source-control): GitManager reads provider resolvers, not host kinds by @juliusmarminge in pingdotgg/t3code#17617 * refactor(source-control): PullRequestService reads GitHub resolvers, not its kind by @juliusmarminge in pingdotgg/t3code#17619 * refactor(source-control): Forgejo identity and Azure DevOps addressing move into their packages by @juliusmarminge in pingdotgg/t3code#17624 * refactor: home directory comes from a HostProcessHomeDirectory reference by @juliusmarminge in pingdotgg/t3code#17628 * refactor(shared): host process references live in a HostProcess module by @juliusmarminge in pingdotgg/t3code#17641 * feat(web): filter PR comments by bots and resolved threads by @juliusmarminge in pingdotgg/t3code#17645 * fix(clients): remove redundant prefix from PR watch status by @extoci in pingdotgg/t3code#17635 * fix(web): pending requests wait until you stop typing by @maria-rcks in pingdotgg/t3code#17637 * fix(models): remove new badges from Claude Opus and Sonnet 5.5 by @extoci in pingdotgg/t3code#17646 * fix(ui): keep focus and selection borders visible across the app by @maria-rcks in pingdotgg/t3code#16675 * fix(mobile): prevent row presses during native back swipes by @juliusmarminge in pingdotgg/t3code#17648 * fix(server): Codex shadow homes replace stray sqlite maintenance locks by @juliusmarminge in pingdotgg/t3code#17663 * feat(desktop): T3 Code can be your default web browser on macOS by @juliusmarminge in pingdotgg/t3code#17587 * test(server): the ACP process-tree test no longer collides with the runner's own pid by @yordis in pingdotgg/t3code#17647 * fix(web): keep branch restore action inline in narrow composers by @Saikrishna1876 in pingdotgg/t3code#14811 * fix(web): composer banner actions stay inline whenever they fit by @maria-rcks in pingdotgg/t3code#17640 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261009.2886...v0.0.46-nightly.20261010.2908 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2908
## What's Changed * chore(deps): upgrade Effect to 4.0.2 by @juliusmarminge in pingdotgg/t3code#17571 * fix(devices): recover stalled video without losing simulator input by @juliusmarminge in pingdotgg/t3code#17566 * fix(web): keep checkout stable while pr actions load by @maria-rcks in pingdotgg/t3code#16625 * fix(mobile): show waiting thread status by @maria-rcks in pingdotgg/t3code#16693 * feat(web): add parent thread breadcrumb navigation by @maria-rcks in pingdotgg/t3code#16666 * fix(server): restart inactivity after snoozed threads wake by @maria-rcks in pingdotgg/t3code#16674 * feat(desktop): passkeys in the in-app browser on macOS by @juliusmarminge in pingdotgg/t3code#16952 * fix(client): load earlier turns works for MCP threads over T3 Connect by @juliusmarminge in pingdotgg/t3code#17599 * refactor(client): sign relay request URLs built from the HttpApi contract by @juliusmarminge in pingdotgg/t3code#17602 * refactor(source-control): add @t3tools/source-control-core by @juliusmarminge in pingdotgg/t3code#17573 * refactor(source-control): Forgejo lives in @t3tools/source-control-forgejo by @juliusmarminge in pingdotgg/t3code#17581 * refactor(source-control): Azure DevOps lives in @t3tools/source-control-azure-devops by @juliusmarminge in pingdotgg/t3code#17592 * refactor(source-control): GitLab lives in @t3tools/source-control-gitlab by @juliusmarminge in pingdotgg/t3code#17594 * refactor(source-control): Bitbucket lives in @t3tools/source-control-bitbucket by @juliusmarminge in pingdotgg/t3code#17597 * refactor(source-control): GitHub lives in @t3tools/source-control-github by @juliusmarminge in pingdotgg/t3code#17607 * refactor(usage): transcript readers come from their drivers by @juliusmarminge in pingdotgg/t3code#17576 * refactor(usage): OpenCode usage comes from provider-opencode by @juliusmarminge in pingdotgg/t3code#17577 * refactor(usage): Cursor account usage comes from provider-cursor by @juliusmarminge in pingdotgg/t3code#17578 * refactor(usage): Antigravity usage is a reader on its driver by @juliusmarminge in pingdotgg/t3code#17579 * refactor(usage): usage readers use Effect FileSystem and SqlClient by @juliusmarminge in pingdotgg/t3code#17615 * fix(web): composer context strip pads both edges evenly by @limineol in pingdotgg/t3code#17562 * test(usage): v4 cache upgrade test waits for the migrated cache write by @Mnigos in pingdotgg/t3code#17553 * feat(mobile): support Duo in the shared iOS app by @juliusmarminge in pingdotgg/t3code#12648 * refactor(source-control): GitManager reads provider resolvers, not host kinds by @juliusmarminge in pingdotgg/t3code#17617 * refactor(source-control): PullRequestService reads GitHub resolvers, not its kind by @juliusmarminge in pingdotgg/t3code#17619 * refactor(source-control): Forgejo identity and Azure DevOps addressing move into their packages by @juliusmarminge in pingdotgg/t3code#17624 * refactor: home directory comes from a HostProcessHomeDirectory reference by @juliusmarminge in pingdotgg/t3code#17628 * refactor(shared): host process references live in a HostProcess module by @juliusmarminge in pingdotgg/t3code#17641 * feat(web): filter PR comments by bots and resolved threads by @juliusmarminge in pingdotgg/t3code#17645 * fix(clients): remove redundant prefix from PR watch status by @extoci in pingdotgg/t3code#17635 * fix(web): pending requests wait until you stop typing by @maria-rcks in pingdotgg/t3code#17637 * fix(models): remove new badges from Claude Opus and Sonnet 5.5 by @extoci in pingdotgg/t3code#17646 * fix(ui): keep focus and selection borders visible across the app by @maria-rcks in pingdotgg/t3code#16675 * fix(mobile): prevent row presses during native back swipes by @juliusmarminge in pingdotgg/t3code#17648 * fix(server): Codex shadow homes replace stray sqlite maintenance locks by @juliusmarminge in pingdotgg/t3code#17663 * feat(desktop): T3 Code can be your default web browser on macOS by @juliusmarminge in pingdotgg/t3code#17587 * test(server): the ACP process-tree test no longer collides with the runner's own pid by @yordis in pingdotgg/t3code#17647 * fix(web): keep branch restore action inline in narrow composers by @Saikrishna1876 in pingdotgg/t3code#14811 * fix(web): composer banner actions stay inline whenever they fit by @maria-rcks in pingdotgg/t3code#17640 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261009.2886...v0.0.46-nightly.20261010.2908 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2908
Third layer of moving each source control host into its own package. It stacks on #17581.
The Azure DevOps support moves out of
apps/serverinto@t3tools/source-control-azure-devops, one subpath per module:azCLI client (AzureDevOpsCli)The package reaches the server only through
SourceControlHost.driverjoinsBUILT_IN_SOURCE_CONTROL_DRIVERS. Neither registry,server.ts, norws.tsnames Azure DevOps any more.BUILT_IN_DRIVERSis for agent providers, so the registry'sRchannel stays honest as more hosts join.diffdependency moves fromapps/serverto the package, which is now its only user.Tests move with their code, with only imports and wiring changed. The
azclient test runs againstTestSourceControlHost.Verified with
tsc(apps/server and the packages), knip, a frozen-lockfile install, release smoke, and 59 test files (1405 tests).🤖 Generated with Claude Code — Claude Opus 5.5 in T3 Code