apps/mobile/src/components/SourceControlIcon.tsx | 17 +- apps/mobile/src/features/projects/AddProjectRepositoryRoute.tsx | 1 + apps/mobile/src/features/projects/AddProjectScreen.tsx | 1 + apps/server/src/git/GitManager.test.ts | 68 ++ apps/server/src/git/GitManager.ts | 38 +- apps/server/src/mcp/toolkits/pullRequests/handlers.test.ts | 46 ++ apps/server/src/mcp/toolkits/pullRequests/handlers.ts | 11 +- apps/server/src/orchestration/Layers/ProjectionPipeline.test.ts | 33 + apps/server/src/orchestration/Layers/ProjectionPipeline.ts | 16 +- apps/server/src/orchestration/PullRequestSyncReactor.test.ts | 25 + apps/server/src/orchestration/PullRequestSyncReactor.ts | 11 +- apps/server/src/orchestration/decider.pullRequests.test.ts | 43 + apps/server/src/project/RepositoryIdentityResolver.test.ts | 43 +- apps/server/src/project/RepositoryIdentityResolver.ts | 10 +- apps/server/src/pullRequest/ForgejoPullRequestProvider.ts | 584 ++++++++++++++ apps/server/src/pullRequest/PullRequestProvider.ts | 1 + apps/server/src/pullRequest/PullRequestProviderRegistry.ts | 4 + apps/server/src/pullRequest/PullRequestService.test.ts | 112 +++ apps/server/src/pullRequest/PullRequestService.ts | 56 +- apps/server/src/pullRequest/forgejoPullRequestJson.ts | 262 +++++++ apps/server/src/pullRequest/linkedThreads.test.ts | 32 +- apps/server/src/pullRequest/linkedThreads.ts | 24 +- apps/server/src/server.ts | 53 +- apps/server/src/sourceControl/ForgejoCli.ts | 720 +++++++++++++++++ apps/server/src/sourceControl/ForgejoSourceControlProvider.ts | 387 +++++++++ apps/server/src/sourceControl/SourceControlDiscovery.test.ts | 1349 +++++++++++++++++++++++++++++++- apps/server/src/sourceControl/SourceControlProvider.ts | 2 + apps/server/src/sourceControl/SourceControlProviderDiscovery.ts | 29 +- apps/server/src/sourceControl/SourceControlProviderRegistry.test.ts | 3 + apps/server/src/sourceControl/SourceControlProviderRegistry.ts | 4 + apps/server/src/sourceControl/forgejoPullRequests.ts | 47 ++ apps/server/src/ws.ts | 2 + apps/web/src/components/CommandPalette.tsx | 13 +- apps/web/src/components/GitActionsControl.tsx | 28 +- apps/web/src/components/Icons.tsx | 13 + apps/web/src/components/ThreadStatusIndicators.tsx | 4 +- apps/web/src/components/pullRequest/LinkPullRequestDialog.tsx | 5 +- apps/web/src/components/pullRequest/PullRequestCodeTab.tsx | 1 + apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx | 6 +- apps/web/src/components/pullRequest/PullRequestReviewBar.tsx | 14 +- apps/web/src/components/pullRequest/PullRequestThreadLinks.tsx | 11 +- apps/web/src/components/pullRequest/pullRequestDetail.logic.test.ts | 27 + apps/web/src/components/pullRequest/pullRequestDetail.logic.ts | 5 + apps/web/src/components/pullRequest/pullRequestLinkContextMenu.ts | 1 + apps/web/src/components/settings/SourceControlSettings.tsx | 2 + apps/web/src/components/settings/settingsSearch.ts | 2 +- apps/web/src/lib/openPullRequestLink.test.ts | 84 ++ apps/web/src/lib/openPullRequestLink.ts | 68 +- apps/web/src/pullRequestReference.ts | 5 + apps/web/src/sourceControlPresentation.ts | 14 +- apps/web/src/state/sourceControlActions.ts | 2 +- docs/user/source-control.md | 22 +- packages/client-runtime/src/operations/projects.test.ts | 7 + packages/client-runtime/src/operations/projects.ts | 14 +- packages/client-runtime/src/threadPullRequestCompatibility.test.ts | 18 + packages/client-runtime/src/threadPullRequestCompatibility.ts | 8 +- packages/contracts/src/environment.ts | 2 + packages/contracts/src/pullRequest.test.ts | 15 + packages/contracts/src/pullRequest.ts | 23 +- packages/contracts/src/sourceControl.ts | 1 + packages/shared/src/changeRequestUrl.test.ts | 48 ++ packages/shared/src/changeRequestUrl.ts | 33 +- packages/shared/src/sourceControl.test.ts | 16 + packages/shared/src/sourceControl.ts | 29 +- packages/shared/src/threadPullRequests.test.ts | 22 + packages/shared/src/threadPullRequests.ts | 50 +- 66 files changed, 4545 insertions(+), 102 deletions(-)