apps/server/src/auth/RpcAuthorization.test.ts | 11 + apps/server/src/auth/RpcAuthorization.ts | 17 + apps/server/src/cloud/bootService.test.ts | 2 + apps/server/src/cloud/pinnedRuntime.test.ts | 2 + apps/server/src/cloud/selfUpdate.test.ts | 4 + apps/server/src/environment/ServerEnvironment.test.ts | 1 + apps/server/src/environment/ServerEnvironment.ts | 1 + apps/server/src/environment/ServerEnvironmentLabel.test.ts | 8 + apps/server/src/git/GitManager.test.ts | 543 +++++++- apps/server/src/git/GitManager.ts | 118 +- apps/server/src/processRunner.ts | 9 +- apps/server/src/pullRequest/AzureDevOpsPullRequestCli.test.ts | 507 +++++++ apps/server/src/pullRequest/AzureDevOpsPullRequestCli.ts | 487 +++++++ apps/server/src/pullRequest/AzureDevOpsPullRequestProvider.test.ts | 21 + apps/server/src/pullRequest/AzureDevOpsPullRequestProvider.ts | 246 ++++ apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts | 874 ++++++++++++ apps/server/src/pullRequest/BitbucketPullRequestApi.ts | 785 +++++++++++ apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts | 52 + apps/server/src/pullRequest/BitbucketPullRequestProvider.ts | 290 ++++ apps/server/src/pullRequest/GitHubPullRequestCli.test.ts | 1772 +++++++++++++++++++++++++ apps/server/src/pullRequest/GitHubPullRequestCli.ts | 1473 +++++++++++++++++++++ apps/server/src/pullRequest/GitHubPullRequestProvider.test.ts | 222 ++++ apps/server/src/pullRequest/GitHubPullRequestProvider.ts | 352 +++++ apps/server/src/pullRequest/GitLabPullRequestCli.test.ts | 1144 ++++++++++++++++ apps/server/src/pullRequest/GitLabPullRequestCli.ts | 1153 ++++++++++++++++ apps/server/src/pullRequest/GitLabPullRequestProvider.test.ts | 40 + apps/server/src/pullRequest/GitLabPullRequestProvider.ts | 219 ++++ apps/server/src/pullRequest/PullRequestProvider.ts | 387 ++++++ apps/server/src/pullRequest/PullRequestProviderRegistry.ts | 59 + apps/server/src/pullRequest/PullRequestService.test.ts | 2262 ++++++++++++++++++++++++++++++++ apps/server/src/pullRequest/PullRequestService.ts | 1670 +++++++++++++++++++++++ apps/server/src/pullRequest/azureDevOpsPullRequestJson.test.ts | 300 +++++ apps/server/src/pullRequest/azureDevOpsPullRequestJson.ts | 333 +++++ apps/server/src/pullRequest/bitbucketPullRequestJson.test.ts | 360 +++++ apps/server/src/pullRequest/bitbucketPullRequestJson.ts | 614 +++++++++ apps/server/src/pullRequest/gitHubPullRequestJson.test.ts | 959 ++++++++++++++ apps/server/src/pullRequest/gitHubPullRequestJson.ts | 1590 ++++++++++++++++++++++ apps/server/src/pullRequest/gitLabMergeRequestJson.test.ts | 455 +++++++ apps/server/src/pullRequest/gitLabMergeRequestJson.ts | 698 ++++++++++ apps/server/src/pullRequest/http.ts | 23 + apps/server/src/server.test.ts | 1 + apps/server/src/server.ts | 13 + apps/server/src/sourceControl/BitbucketApi.test.ts | 110 ++ apps/server/src/sourceControl/BitbucketApi.ts | 228 +++- apps/server/src/sourceControl/GitHubCli.ts | 5 + apps/server/src/sourceControl/GitLabCli.ts | 5 + apps/server/src/sourceControl/azureDevOpsPullRequests.ts | 53 +- apps/server/src/stream/collectUint8StreamText.test.ts | 18 + apps/server/src/stream/collectUint8StreamText.ts | 17 +- apps/server/src/vcs/GitVcsDriver.ts | 41 + apps/server/src/vcs/GitVcsDriverCore.ts | 93 ++ apps/server/src/vcs/VcsProcess.test.ts | 2 + apps/server/src/vcs/VcsProcess.ts | 5 + apps/server/src/ws.ts | 68 + apps/web/src/components/BranchToolbarBranchSelector.tsx | 4 +- apps/web/src/components/ChatMarkdown.tsx | 95 +- apps/web/src/components/ChatView.logic.ts | 2 +- apps/web/src/components/ChatView.tsx | 90 +- apps/web/src/components/DiffPanel.tsx | 292 +---- apps/web/src/components/GitActionsControl.tsx | 17 +- apps/web/src/components/LegacySidebar.tsx | 36 +- apps/web/src/components/RightPanelTabs.tsx | 101 +- apps/web/src/components/Sidebar.tsx | 15 +- apps/web/src/components/chat/ChatHeader.tsx | 3 + apps/web/src/components/chat/PanelLayoutControls.tsx | 48 +- apps/web/src/components/diffs/AnnotatableCodeView.test.tsx | 4 +- apps/web/src/components/diffs/AnnotatableCodeView.tsx | 13 +- apps/web/src/components/diffs/DiffCommentAnnotation.test.tsx | 92 ++ apps/web/src/components/diffs/DiffCommentAnnotation.tsx | 131 ++ apps/web/src/components/diffs/StyledDiffCodeView.test.tsx | 58 + apps/web/src/components/diffs/StyledDiffCodeView.tsx | 309 +++++ apps/web/src/components/diffs/commentSubmitShortcut.test.ts | 26 + apps/web/src/components/diffs/commentSubmitShortcut.ts | 16 + apps/web/src/components/files/FilePreviewPanel.tsx | 4 +- apps/web/src/components/files/LocalCommentAnnotation.test.tsx | 66 - apps/web/src/components/files/LocalCommentAnnotation.tsx | 103 -- apps/web/src/components/preview/PreviewPanelShell.tsx | 13 +- apps/web/src/components/pullRequest/PullRequestActivityUnavailableState.tsx | 31 + apps/web/src/components/pullRequest/PullRequestCodeTab.tsx | 1235 +++++++++++++++++ apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx | 1414 ++++++++++++++++++++ apps/web/src/components/pullRequest/PullRequestGhosts.tsx | 144 ++ apps/web/src/components/pullRequest/PullRequestListEmptyState.test.tsx | 54 + apps/web/src/components/pullRequest/PullRequestListEmptyState.tsx | 184 +++ apps/web/src/components/pullRequest/PullRequestListFilters.test.tsx | 99 ++ apps/web/src/components/pullRequest/PullRequestListFilters.tsx | 288 ++++ apps/web/src/components/pullRequest/PullRequestMarkdown.tsx | 58 + apps/web/src/components/pullRequest/PullRequestReviewAnnotation.tsx | 236 ++++ apps/web/src/components/pullRequest/PullRequestReviewBar.tsx | 153 +++ apps/web/src/components/pullRequest/PullRequestReviewerPicker.tsx | 187 +++ apps/web/src/components/pullRequest/PullRequestRow.tsx | 97 ++ apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx | 463 +++++++ apps/web/src/components/pullRequest/PullRequestTimelineTab.tsx | 365 ++++++ apps/web/src/components/pullRequest/PullRequestsUnavailableState.test.tsx | 32 + apps/web/src/components/pullRequest/PullRequestsUnavailableState.tsx | 43 + apps/web/src/components/pullRequest/pullRequestDetail.logic.test.ts | 789 +++++++++++ apps/web/src/components/pullRequest/pullRequestDetail.logic.ts | 650 +++++++++ apps/web/src/components/pullRequest/pullRequestDiff.logic.test.ts | 81 ++ apps/web/src/components/pullRequest/pullRequestDiff.logic.ts | 44 + apps/web/src/components/pullRequest/pullRequestList.logic.test.ts | 445 +++++++ apps/web/src/components/pullRequest/pullRequestList.logic.ts | 379 ++++++ apps/web/src/components/pullRequest/pullRequestMarkdown.logic.test.ts | 146 +++ apps/web/src/components/pullRequest/pullRequestMarkdown.logic.ts | 143 ++ apps/web/src/components/pullRequest/pullRequestPresentation.tsx | 269 ++++ apps/web/src/components/pullRequest/pullRequestReviewStore.test.ts | 47 + apps/web/src/components/pullRequest/pullRequestReviewStore.ts | 99 ++ apps/web/src/components/sidebar/SidebarChrome.tsx | 25 +- apps/web/src/components/ui/skeleton.tsx | 2 +- apps/web/src/connection/runtime.ts | 7 +- apps/web/src/hooks/useHandleNewThread.ts | 25 +- apps/web/src/hooks/useLiveRefresh.test.ts | 90 ++ apps/web/src/hooks/useLiveRefresh.ts | 182 +++ apps/web/src/index.css | 50 +- apps/web/src/lib/chatThreadActions.ts | 3 +- apps/web/src/lib/diffFileContents.test.ts | 80 ++ apps/web/src/lib/diffFileContents.ts | 124 ++ apps/web/src/lib/diffRendering.ts | 12 + apps/web/src/lib/openPullRequestLink.test.ts | 171 ++- apps/web/src/lib/openPullRequestLink.ts | 236 +++- apps/web/src/markdown-github-alerts.test.tsx | 60 + apps/web/src/markdown-github-alerts.ts | 72 + apps/web/src/reviewCommentContext.test.ts | 21 + apps/web/src/reviewCommentContext.ts | 13 +- apps/web/src/rightPanelStore.test.ts | 92 ++ apps/web/src/rightPanelStore.ts | 114 +- apps/web/src/routeTree.gen.ts | 21 + apps/web/src/routes/_chat.pull-requests.tsx | 1489 +++++++++++++++++++++ apps/web/src/sourceControlPresentation.ts | 9 +- apps/web/src/state/pullRequests.ts | 5 + apps/web/src/state/queries.ts | 3 +- docs/user/source-control.md | 3 + packages/client-runtime/package.json | 4 + packages/client-runtime/src/rpc/http.ts | 6 + packages/client-runtime/src/state/pullRequestDiffHttp.test.ts | 80 ++ packages/client-runtime/src/state/pullRequestDiffHttp.ts | 74 ++ packages/client-runtime/src/state/pullRequests.ts | 158 +++ packages/client-runtime/src/state/runtime.ts | 2 +- packages/contracts/src/environment.test.ts | 29 + packages/contracts/src/environment.ts | 3 + packages/contracts/src/environmentHttp.ts | 23 + packages/contracts/src/git.ts | 6 + packages/contracts/src/index.ts | 1 + packages/contracts/src/pullRequest.test.ts | 155 +++ packages/contracts/src/pullRequest.ts | 800 +++++++++++ packages/contracts/src/rpc.ts | 149 +++ vite.config.ts | 6 + 145 files changed, 34259 insertions(+), 581 deletions(-)