apps/mobile/metro.config.js | 29 +- apps/mobile/scripts/generate-device-stream.mts | 39 ++ apps/mobile/src/Stack.tsx | 11 + apps/mobile/src/components/AppSymbol.tsx | 3 + apps/mobile/src/features/devices/DevicePreviewRouteScreen.tsx | 309 ++++++++++++++ apps/mobile/src/features/devices/DeviceStreamWebView.tsx | 109 +++++ apps/mobile/src/features/devices/device-preview-button.tsx | 41 ++ apps/mobile/src/features/devices/device-stream-document.test.ts | 49 +++ apps/mobile/src/features/devices/device-stream-document.ts | 41 ++ apps/mobile/src/features/devices/device-stream.browser.ts | 223 ++++++++++ apps/mobile/src/features/devices/threadDevicePreviews.test.ts | 106 +++++ apps/mobile/src/features/devices/threadDevicePreviews.ts | 28 ++ apps/mobile/src/features/threads/ThreadDetailScreen.tsx | 25 ++ apps/mobile/src/features/threads/floating-working-control.tsx | 52 ++- apps/mobile/src/state/device.ts | 44 ++ apps/mobile/src/types/mobile-device-stream.d.ts | 4 + apps/web/src/components/device/DeviceStreamView.test.tsx | 2 +- apps/web/src/components/device/DeviceStreamView.tsx | 2 +- apps/web/src/components/device/deviceStream.test.ts | 167 +++++++- apps/web/src/components/device/deviceStream.ts | 697 ------------------------------- apps/web/src/components/preview/ThreadPreviewMiniPlayer.tsx | 2 +- apps/web/src/components/preview/previewMiniPlayerLayout.ts | 2 +- docs/user/devices.md | 9 +- knip.jsonc | 9 +- packages/client-runtime/package.json | 8 + packages/client-runtime/src/device/hubAccess.ts | 18 + packages/client-runtime/src/device/stream.ts | 712 ++++++++++++++++++++++++++++++++ packages/client-runtime/src/state/deviceHubAccess.ts | 21 +- 28 files changed, 2023 insertions(+), 739 deletions(-)