.github/workflows/mobile-eas-preview.yml | 2 + apps/mobile/assets/icons/pull-request.png | Bin 0 -> 366 bytes apps/mobile/assets/icons/pull-request@2x.png | Bin 0 -> 620 bytes apps/mobile/assets/icons/pull-request@3x.png | Bin 0 -> 1006 bytes apps/mobile/deps/react-native-screens-5.0.0-t3.17.tgz | Bin 768181 -> 0 bytes apps/mobile/deps/react-native-screens-5.0.0-t3.24.tgz | Bin 0 -> 773513 bytes apps/mobile/modules/t3-markdown-text/src/NativeMarkdownBlock.tsx | 28 +- apps/mobile/modules/t3-markdown-text/src/SelectableMarkdownText.tsx | 6 +- apps/mobile/modules/t3-markdown-text/src/githubAlert.test.ts | 42 ++ apps/mobile/modules/t3-markdown-text/src/githubAlert.ts | 52 ++ apps/mobile/modules/t3-markdown-text/src/nativeMarkdownText.ts | 98 +++ apps/mobile/modules/t3-native-controls/ios/T3NativeControlsModule.swift | 25 +- apps/mobile/modules/t3-native-controls/ios/T3NativeFilePresentation.swift | 24 +- apps/mobile/modules/t3-review-diff/ios/T3ReviewDiffModule.swift | 16 +- apps/mobile/package.json | 2 +- apps/mobile/src/Stack.tsx | 70 ++- apps/mobile/src/components/AndroidScreenHeader.tsx | 9 +- apps/mobile/src/components/AppSymbol.ios.tsx | 27 +- apps/mobile/src/components/AppSymbol.tsx | 32 +- apps/mobile/src/components/CompactBrandTitle.tsx | 3 +- apps/mobile/src/components/ComposerAttachmentStrip.tsx | 112 ++-- apps/mobile/src/components/ComposerContextSheet.tsx | 21 +- apps/mobile/src/components/ComposerEditor.tsx | 3 +- apps/mobile/src/components/FilePreview.ios.tsx | 24 +- apps/mobile/src/components/FilePreview.tsx | 9 +- apps/mobile/src/components/FilePreviewGallery.tsx | 16 + apps/mobile/src/components/FilePreviewModal.tsx | 120 +++- apps/mobile/src/components/FilePreviewModal.types.ts | 14 +- apps/mobile/src/components/MaterialButton.tsx | 3 +- apps/mobile/src/components/MediaImagePreview.tsx | 18 +- apps/mobile/src/components/SegmentedControl.tsx | 50 +- apps/mobile/src/connection/runtime.ts | 2 + apps/mobile/src/features/diffs/nativeReviewDiffSurface.ts | 4 +- apps/mobile/src/features/files/FileMarkdownPreview.tsx | 4 +- apps/mobile/src/features/home/AndroidHomeFab.android.tsx | 2 +- apps/mobile/src/features/home/AndroidHomeFab.shared.tsx | 1 + apps/mobile/src/features/home/HomeHeader.android.tsx | 2 + apps/mobile/src/features/home/HomeHeader.tsx | 4 + apps/mobile/src/features/home/HomeHeader.types.ts | 1 + apps/mobile/src/features/home/HomeRouteScreen.tsx | 52 +- apps/mobile/src/features/home/HomeScreen.tsx | 53 +- apps/mobile/src/features/home/ThreadListFilters.tsx | 99 +++ apps/mobile/src/features/layout/createWorkspaceStackNavigator.ios.tsx | 131 ++-- apps/mobile/src/features/pull-requests/PullRequestAgentRow.tsx | 40 ++ apps/mobile/src/features/pull-requests/PullRequestControls.tsx | 314 ++++++++++ apps/mobile/src/features/pull-requests/PullRequestDescription.tsx | 187 ++++++ apps/mobile/src/features/pull-requests/PullRequestDiscussionScreen.tsx | 247 ++++++++ apps/mobile/src/features/pull-requests/PullRequestEntryRow.tsx | 18 + apps/mobile/src/features/pull-requests/PullRequestFiles.tsx | 300 +++++++++ apps/mobile/src/features/pull-requests/PullRequestInlineCommentScreen.tsx | 150 +++++ apps/mobile/src/features/pull-requests/PullRequestListFilters.tsx | 276 ++++++++ apps/mobile/src/features/pull-requests/PullRequestListRow.tsx | 158 +++++ apps/mobile/src/features/pull-requests/PullRequestMarkdown.tsx | 135 ++++ apps/mobile/src/features/pull-requests/PullRequestMergeControls.tsx | 255 ++++++++ apps/mobile/src/features/pull-requests/PullRequestOverviewLoading.tsx | 109 ++++ apps/mobile/src/features/pull-requests/PullRequestPresentation.tsx | 65 ++ apps/mobile/src/features/pull-requests/PullRequestReviewSheet.tsx | 236 +++++++ apps/mobile/src/features/pull-requests/PullRequestReviewersScreen.tsx | 326 ++++++++++ apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx | 1077 ++++++++++++++++++++++++++++++++ apps/mobile/src/features/pull-requests/PullRequestSheetContent.tsx | 60 ++ apps/mobile/src/features/pull-requests/PullRequestStackCard.tsx | 85 +++ apps/mobile/src/features/pull-requests/PullRequestStatusRows.tsx | 315 ++++++++++ apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx | 285 +++++++++ apps/mobile/src/features/pull-requests/PullRequestsScreen.tsx | 342 ++++++++++ apps/mobile/src/features/pull-requests/pullRequestActions.test.ts | 121 ++++ apps/mobile/src/features/pull-requests/pullRequestActions.ts | 144 +++++ apps/mobile/src/features/pull-requests/pullRequestAgentTasks.test.ts | 70 +++ apps/mobile/src/features/pull-requests/pullRequestAgentTasks.ts | 71 +++ apps/mobile/src/features/pull-requests/pullRequestDescription.test.ts | 50 ++ apps/mobile/src/features/pull-requests/pullRequestDescriptionContent.ts | 22 + apps/mobile/src/features/pull-requests/pullRequestDiffComments.test.ts | 117 ++++ apps/mobile/src/features/pull-requests/pullRequestDiffComments.ts | 103 +++ apps/mobile/src/features/pull-requests/pullRequestDiffPages.test.ts | 47 ++ apps/mobile/src/features/pull-requests/pullRequestDiffPages.ts | 55 ++ apps/mobile/src/features/pull-requests/pullRequestFileFilters.test.ts | 98 +++ apps/mobile/src/features/pull-requests/pullRequestFileFilters.ts | 35 ++ apps/mobile/src/features/pull-requests/pullRequestList.test.ts | 362 +++++++++++ apps/mobile/src/features/pull-requests/pullRequestList.ts | 274 ++++++++ apps/mobile/src/features/pull-requests/pullRequestNavigation.test.ts | 26 + apps/mobile/src/features/pull-requests/pullRequestReviewDrafts.test.ts | 81 +++ apps/mobile/src/features/pull-requests/pullRequestReviewDrafts.ts | 78 +++ apps/mobile/src/features/pull-requests/pullRequestStack.test.ts | 141 +++++ apps/mobile/src/features/pull-requests/pullRequestStack.ts | 72 +++ apps/mobile/src/features/pull-requests/pullRequestStatus.test.ts | 109 ++++ apps/mobile/src/features/pull-requests/pullRequestStatus.ts | 203 ++++++ apps/mobile/src/features/pull-requests/usePullRequestAction.ts | 59 ++ apps/mobile/src/features/pull-requests/usePullRequestAgentActions.ts | 58 ++ apps/mobile/src/features/pull-requests/usePullRequestDiff.ts | 105 ++++ apps/mobile/src/features/pull-requests/usePullRequestFileFilter.ts | 26 + apps/mobile/src/features/pull-requests/usePullRequestFilesViewed.ts | 115 ++++ apps/mobile/src/features/pull-requests/usePullRequestList.ts | 317 ++++++++++ apps/mobile/src/features/pull-requests/usePullRequestListActions.ts | 198 ++++++ apps/mobile/src/features/pull-requests/usePullRequestPermissions.ts | 36 ++ apps/mobile/src/features/pull-requests/usePullRequestReviewDraft.ts | 105 ++++ apps/mobile/src/features/pull-requests/usePullRequestStack.ts | 50 ++ apps/mobile/src/features/pull-requests/usePullRequestThreads.ts | 159 +++++ apps/mobile/src/features/threads/GitActionProgressOverlay.tsx | 10 +- apps/mobile/src/features/threads/NewTaskDraftScreen.tsx | 1 + apps/mobile/src/features/threads/ThreadComposer.tsx | 12 +- apps/mobile/src/features/threads/ThreadFeed.tsx | 174 ++++-- apps/mobile/src/features/threads/ThreadGitControls.tsx | 7 +- apps/mobile/src/features/threads/ThreadMarkdownImage.tsx | 39 +- apps/mobile/src/features/threads/ThreadRouteScreen.tsx | 8 +- apps/mobile/src/features/threads/git/GitOverviewSheet.tsx | 9 +- apps/mobile/src/features/threads/messageImageGallery.ts | 35 ++ apps/mobile/src/features/threads/new-task-context-presentation.test.ts | 10 + apps/mobile/src/features/threads/new-task-context-presentation.ts | 6 + apps/mobile/src/features/threads/new-task-flow-provider.tsx | 7 + apps/mobile/src/features/threads/thread-work-log.tsx | 29 +- apps/mobile/src/features/threads/useThreadHeaderOptions.test.tsx | 2 + apps/mobile/src/features/workspace/ListFilterMenu.tsx | 61 ++ apps/mobile/src/features/workspace/WorkspaceDock.tsx | 80 +++ apps/mobile/src/features/workspace/WorkspaceNativeTabs.ios.tsx | 107 ++++ apps/mobile/src/features/workspace/WorkspaceRootScreen.tsx | 158 +++++ apps/mobile/src/features/workspace/WorkspaceTabsContext.tsx | 92 +++ apps/mobile/src/features/workspace/WorkspaceToolbar.ios.tsx | 130 ++++ apps/mobile/src/features/workspace/WorkspaceToolbar.tsx | 179 ++++++ apps/mobile/src/features/workspace/useSystemWorkspaceTabBar.ts | 6 + apps/mobile/src/features/workspace/workspace-tabs-state.test.ts | 77 +++ apps/mobile/src/features/workspace/workspace-tabs-state.ts | 92 +++ apps/mobile/src/lib/composerContext.test.ts | 32 + apps/mobile/src/lib/composerContext.ts | 16 +- apps/mobile/src/lib/composerImageGallery.ts | 17 + apps/mobile/src/lib/contextImageGallery.ts | 33 + apps/mobile/src/lib/filePreviewGallery.test.ts | 57 ++ apps/mobile/src/lib/filePreviewGallery.ts | 47 ++ apps/mobile/src/lib/markdownHtml.test.ts | 79 +++ apps/mobile/src/lib/markdownImageSources.ts | 18 + apps/mobile/src/lib/pullRequestNavigation.ts | 15 + apps/mobile/src/native/NativeHeaderToolbar.tsx | 67 +- apps/mobile/src/native/StackHeader.tsx | 10 +- apps/mobile/src/native/V5StackHeader.ios.tsx | 62 +- apps/mobile/src/native/createV5StackNavigator.ios.tsx | 12 +- apps/mobile/src/native/useOpenPullRequest.ts | 51 ++ apps/mobile/src/native/v5-workspace-context.tsx | 6 + apps/mobile/src/persistence/mobile-preferences.ts | 22 +- apps/mobile/src/state/git.ts | 4 + apps/mobile/src/state/pull-requests.ts | 23 +- apps/mobile/src/state/query.ts | 2 + apps/mobile/src/state/thread-outbox-model.ts | 2 + apps/mobile/src/state/thread-outbox.test.ts | 7 +- apps/mobile/src/state/use-composer-drafts.test.ts | 16 + apps/mobile/src/state/use-composer-drafts.ts | 5 + apps/mobile/src/state/use-pull-to-refresh.ts | 41 ++ apps/mobile/src/state/use-thread-outbox-drain.permissions.test.ts | 119 +++- apps/mobile/src/state/use-thread-outbox-drain.test.ts | 2 + apps/mobile/src/state/use-thread-outbox-drain.ts | 45 +- docs/operations/mobile-screens-fork.md | 7 +- docs/user/source-control.md | 9 +- packages/shared/package.json | 4 + packages/shared/src/githubMarkdownLinks.test.ts | 35 ++ packages/shared/src/githubMarkdownLinks.ts | 91 +++ pnpm-lock.yaml | 18 +- 153 files changed, 11595 insertions(+), 378 deletions(-)