apps/desktop/src/electron/ElectronProtocol.test.ts | 2 +- apps/desktop/src/electron/ElectronProtocol.ts | 4 +- apps/mobile/modules/t3-markdown-text/assets/file-icons/pierre_video.png | Bin 0 -> 676 bytes apps/mobile/modules/t3-markdown-text/package.json | 2 + apps/mobile/modules/t3-markdown-text/scripts/sync-pierre-file-icons.mjs | 2 + apps/mobile/modules/t3-markdown-text/src/markdownFileIcons.generated.ts | 1 + apps/mobile/modules/t3-markdown-text/src/markdownLinks.ts | 31 ++- apps/mobile/modules/t3-markdown-text/src/nativeMarkdownText.ts | 19 +- apps/mobile/src/components/FilePreview.ios.tsx | 14 +- apps/mobile/src/components/FilePreview.tsx | 2 + apps/mobile/src/components/FilePreviewModal.tsx | 16 +- apps/mobile/src/components/MediaActionsMenu.tsx | 43 ++++ apps/mobile/src/components/MediaImagePreview.tsx | 61 +++++ apps/mobile/src/components/MediaSourceCaption.tsx | 19 ++ apps/mobile/src/components/MediaVideoPlayer.tsx | 187 ++++++++++++++ apps/mobile/src/components/MediaVideoPreviewModal.tsx | 96 ++++++++ apps/mobile/src/components/VideoPreviewModal.ios.tsx | 10 +- apps/mobile/src/components/VideoPreviewModal.tsx | 18 +- apps/mobile/src/components/VideoThumbnailImage.tsx | 3 +- apps/mobile/src/features/files/ThreadFilesRouteScreen.tsx | 135 +++++++++-- apps/mobile/src/features/files/WorkspaceFileImagePreview.tsx | 14 +- apps/mobile/src/features/files/WorkspaceFileVideoPreview.tsx | 47 ++++ apps/mobile/src/features/files/filePath.ts | 5 + apps/mobile/src/features/files/preload-workspace-file.ts | 8 +- apps/mobile/src/features/files/workspaceFileAssetUrl.ts | 30 ++- apps/mobile/src/features/threads/ThreadFeed.tsx | 358 +++++++++++++++++++-------- apps/mobile/src/lib/markdownLinks.test.ts | 29 ++- apps/mobile/src/lib/markdownMedia.test.ts | 77 ++++++ apps/mobile/src/lib/markdownMedia.ts | 89 +++++++ apps/mobile/src/lib/mediaActions.ts | 121 +++++++++ apps/mobile/src/lib/nativeMarkdownText.test.ts | 37 +++ apps/mobile/src/lib/videoPreviewSource.ts | 54 +++++ apps/mobile/src/state/assets.ts | 22 ++ apps/mobile/src/state/use-atom-query-runner.ts | 8 +- apps/server/src/assets/AssetAccess.test.ts | 335 +++++++++++++++++++++++++ apps/server/src/assets/AssetAccess.ts | 84 +++++++ apps/server/src/assets/MediaFile.ts | 113 +++++++++ apps/server/src/http.test.ts | 176 +++++++++++++- apps/server/src/http.ts | 56 ++++- apps/web/src/assets/assetUrls.ts | 19 +- apps/web/src/components/ChatMarkdown.tsx | 417 +++++++++++++++++++++++++++----- apps/web/src/components/ChatMarkdown.workspace-images.test.tsx | 13 +- apps/web/src/components/ChatView.logic.test.ts | 18 -- apps/web/src/components/ChatView.logic.ts | 39 ++- apps/web/src/components/ChatView.tsx | 100 +++----- apps/web/src/components/chat/ChatComposer.tsx | 5 +- apps/web/src/components/chat/ExpandedImageDialog.test.tsx | 28 --- apps/web/src/components/chat/ExpandedImageDialog.tsx | 177 ++++++++------ apps/web/src/components/chat/ExpandedImagePreview.test.ts | 63 ++--- apps/web/src/components/chat/ExpandedImagePreview.tsx | 121 ++++++++- apps/web/src/components/chat/MessagesTimeline.tsx | 1 + apps/web/src/components/chat/externalLinkContextMenu.test.ts | 2 + apps/web/src/components/chat/externalLinkContextMenu.ts | 2 +- apps/web/src/components/files/FilePreviewPanel.tsx | 138 +++++++++-- apps/web/src/components/files/projectFilesQueryState.ts | 14 +- apps/web/src/components/media/MediaActions.tsx | 189 +++++++++++++++ apps/web/src/components/media/MediaVideoPlayer.tsx | 197 +++++++++++++++ apps/web/src/components/media/OpenMediaLink.tsx | 45 ++++ apps/web/src/components/media/mediaContent.ts | 82 +++++++ apps/web/src/components/pullRequest/PullRequestMarkdown.tsx | 6 +- apps/web/src/contextMenuFallback.ts | 4 + apps/web/src/lib/videoFirstFrame.test.ts | 83 +++++++ apps/web/src/lib/videoFirstFrame.ts | 28 +++ apps/web/src/markdown-links.test.ts | 1 + apps/web/src/markdown-links.ts | 160 +----------- apps/web/src/pierre-icons.ts | 11 + apps/web/src/state/use-atom-query-runner.ts | 8 +- docs/internals/environment-auth.md | 34 +++ docs/user/composer.md | 44 +++- packages/client-runtime/package.json | 8 + packages/client-runtime/src/markdownImages.ts | 2 +- packages/client-runtime/src/markdownLinks.test.ts | 30 +++ packages/client-runtime/src/markdownLinks.ts | 158 ++++++++++++ packages/client-runtime/src/mediaReference.test.ts | 39 +++ packages/client-runtime/src/mediaReference.ts | 95 ++++++++ packages/client-runtime/src/work-log/presentation.test.ts | 2 +- packages/client-runtime/src/work-log/presentation.ts | 4 +- packages/contracts/src/assets.ts | 16 +- packages/shared/src/filePreview.test.ts | 27 +++ packages/shared/src/filePreview.ts | 58 +++++ packages/shared/src/video.ts | 2 + pnpm-lock.yaml | 8 +- 82 files changed, 4144 insertions(+), 682 deletions(-)