apps/desktop/src/preview/Manager.test.ts | 52 +++ apps/desktop/src/preview/Manager.ts | 101 ++++- apps/mobile/modules/t3-markdown-text/ios/T3MarkdownText.mm | 112 +----- apps/mobile/modules/t3-markdown-text/ios/T3MarkdownTextShadowNode.h | 15 +- apps/mobile/modules/t3-markdown-text/ios/T3MarkdownTextShadowNode.mm | 35 +- apps/mobile/modules/t3-markdown-text/src/NativeMarkdownBlock.ios.tsx | 71 +++- apps/mobile/modules/t3-markdown-text/src/NativeMarkdownSelectableText.ios.tsx | 123 ++----- apps/mobile/modules/t3-markdown-text/src/SelectableMarkdownText.ios.tsx | 23 +- apps/mobile/modules/t3-markdown-text/src/SelectableMarkdownText.types.ts | 5 +- apps/mobile/modules/t3-markdown-text/src/markdownLinks.ts | 72 +++- apps/mobile/modules/t3-markdown-text/src/nativeMarkdownText.ts | 10 + apps/mobile/modules/t3-review-diff/ios/T3ReviewDiffModule.swift | 4 + apps/mobile/modules/t3-review-diff/ios/T3ReviewDiffView.swift | 56 ++- apps/mobile/package.json | 1 + apps/mobile/src/app/_layout.tsx | 5 +- apps/mobile/src/app/index.tsx | 177 +++++---- apps/mobile/src/app/settings/_layout.tsx | 9 +- apps/mobile/src/app/settings/archive.tsx | 3 + apps/mobile/src/app/settings/index.tsx | 18 +- apps/mobile/src/app/threads/[environmentId]/[threadId]/_layout.tsx | 26 ++ apps/mobile/src/app/threads/[environmentId]/[threadId]/files/[...path].tsx | 5 + apps/mobile/src/app/threads/[environmentId]/[threadId]/files/index.tsx | 5 + apps/mobile/src/components/LoadingStrip.tsx | 93 +++++ apps/mobile/src/features/archive/ArchivedThreadsRouteScreen.tsx | 95 +++++ apps/mobile/src/features/archive/ArchivedThreadsScreen.tsx | 434 ++++++++++++++++++++++ apps/mobile/src/features/archive/archivedThreadList.test.ts | 144 ++++++++ apps/mobile/src/features/archive/archivedThreadList.ts | 106 ++++++ apps/mobile/src/features/archive/useArchivedThreadSnapshots.ts | 47 +++ apps/mobile/src/features/diffs/nativeReviewDiffSurface.ts | 1 + apps/mobile/src/features/files/FileMarkdownPreview.tsx | 166 +++++++++ apps/mobile/src/features/files/FileTreeBrowser.tsx | 191 ++++++++++ apps/mobile/src/features/files/SourceFileSurface.tsx | 252 +++++++++++++ apps/mobile/src/features/files/ThreadFilesRouteScreen.tsx | 631 ++++++++++++++++++++++++++++++++ apps/mobile/src/features/files/WorkspaceFileImagePreview.tsx | 118 ++++++ apps/mobile/src/features/files/WorkspaceFileWebPreview.tsx | 62 ++++ apps/mobile/src/features/files/filePath.test.ts | 43 +++ apps/mobile/src/features/files/filePath.ts | 116 ++++++ apps/mobile/src/features/files/fileTree.test.ts | 109 ++++++ apps/mobile/src/features/files/fileTree.ts | 220 +++++++++++ apps/mobile/src/features/files/nativeSourceFileAdapter.test.ts | 46 +++ apps/mobile/src/features/files/nativeSourceFileAdapter.ts | 65 ++++ apps/mobile/src/features/files/sourceHighlightingState.test.ts | 123 +++++++ apps/mobile/src/features/files/sourceHighlightingState.ts | 50 +++ apps/mobile/src/features/files/workspace-file-image-cache.test.ts | 64 ++++ apps/mobile/src/features/files/workspace-file-image-cache.ts | 48 +++ apps/mobile/src/features/files/workspaceFileAssetUrl.ts | 31 ++ apps/mobile/src/features/home/HomeHeader.tsx | 244 ++++++++++++ apps/mobile/src/features/home/HomeScreen.tsx | 426 ++++++++++++++------- apps/mobile/src/features/home/homeThreadList.test.ts | 223 +++++++++++ apps/mobile/src/features/home/homeThreadList.ts | 140 +++++++ apps/mobile/src/features/home/thread-swipe-actions.tsx | 238 ++++++++++++ apps/mobile/src/features/home/useThreadListActions.ts | 142 +++++++ apps/mobile/src/features/review/shikiReviewHighlighter.ts | 9 + apps/mobile/src/features/threads/ThreadDetailScreen.tsx | 2 + apps/mobile/src/features/threads/ThreadFeed.tsx | 301 ++++++--------- apps/mobile/src/features/threads/ThreadGitControls.tsx | 11 +- apps/mobile/src/features/threads/ThreadRouteScreen.tsx | 2 + apps/mobile/src/features/threads/thread-work-log.tsx | 261 +++++++++++++ apps/mobile/src/lib/markdownLinks.test.ts | 21 ++ apps/mobile/src/lib/nativeMarkdownText.test.ts | 24 +- apps/mobile/src/lib/routes.test.ts | 45 +++ apps/mobile/src/lib/routes.ts | 53 +++ apps/mobile/src/lib/threadActivity.test.ts | 55 ++- apps/mobile/src/lib/threadActivity.ts | 81 +++- apps/server/src/assets/AssetAccess.test.ts | 36 ++ apps/server/src/assets/AssetAccess.ts | 66 ++-- apps/web/src/AppRoot.test.tsx | 22 ++ apps/web/src/AppRoot.tsx | 19 + apps/web/src/browser/HostedBrowserWebview.tsx | 43 ++- apps/web/src/browser/desktopTabLifetime.test.ts | 45 +++ apps/web/src/browser/desktopTabLifetime.ts | 42 ++- apps/web/src/components/ChatView.tsx | 41 +-- apps/web/src/components/preview/addBrowserSurface.test.ts | 52 +++ apps/web/src/components/preview/addBrowserSurface.ts | 24 ++ apps/web/src/components/preview/closePreviewSession.test.ts | 79 ++++ apps/web/src/components/preview/closePreviewSession.ts | 37 ++ apps/web/src/components/preview/openPreviewSession.test.ts | 18 + apps/web/src/components/preview/openPreviewSession.ts | 14 +- apps/web/src/lib/archivedThreadsState.ts | 45 +-- apps/web/src/lib/threadSort.ts | 93 +---- apps/web/src/logicalProject.ts | 198 +--------- apps/web/src/main.tsx | 10 +- apps/web/src/previewStateStore.test.ts | 31 +- apps/web/src/previewStateStore.ts | 44 ++- apps/web/src/router.ts | 3 - packages/client-runtime/package.json | 8 + packages/client-runtime/src/state/archivedThreads.ts | 44 +++ packages/client-runtime/src/state/projectGrouping.ts | 183 +++++++++ packages/client-runtime/src/state/threadSort.ts | 101 +++++ packages/shared/package.json | 4 + packages/shared/src/filePreview.test.ts | 36 ++ packages/shared/src/filePreview.ts | 29 ++ pnpm-lock.yaml | 99 ++--- 93 files changed, 6791 insertions(+), 1136 deletions(-)