react-native-debug-toolkit 3.1.4 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +88 -65
  2. package/README.zh-CN.md +87 -64
  3. package/bin/debug-toolkit.js +10 -2
  4. package/lib/commonjs/core/initialize.js +5 -3
  5. package/lib/commonjs/core/initialize.js.map +1 -1
  6. package/lib/commonjs/features/devConnect/DevConnectQrScanner.js +146 -0
  7. package/lib/commonjs/features/devConnect/DevConnectQrScanner.js.map +1 -0
  8. package/lib/commonjs/features/devConnect/DevConnectTab.js +426 -0
  9. package/lib/commonjs/features/devConnect/DevConnectTab.js.map +1 -0
  10. package/lib/commonjs/features/devConnect/cameraKit.js +54 -0
  11. package/lib/commonjs/features/devConnect/cameraKit.js.map +1 -0
  12. package/lib/commonjs/features/devConnect/devConnectPreferences.js +35 -0
  13. package/lib/commonjs/features/devConnect/devConnectPreferences.js.map +1 -0
  14. package/lib/commonjs/features/devConnect/devConnectUtils.js +53 -0
  15. package/lib/commonjs/features/devConnect/devConnectUtils.js.map +1 -0
  16. package/lib/commonjs/features/devConnect/index.js +92 -0
  17. package/lib/commonjs/features/devConnect/index.js.map +1 -0
  18. package/lib/commonjs/features/devConnect/platformDetect.js +30 -0
  19. package/lib/commonjs/features/devConnect/platformDetect.js.map +1 -0
  20. package/lib/commonjs/features/devConnect/types.js +2 -0
  21. package/lib/commonjs/features/devConnect/types.js.map +1 -0
  22. package/lib/commonjs/features/network/NetworkLogTab.js +7 -3
  23. package/lib/commonjs/features/network/NetworkLogTab.js.map +1 -1
  24. package/lib/commonjs/index.js +7 -0
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/commonjs/ui/DebugView.js +1 -0
  27. package/lib/commonjs/ui/DebugView.js.map +1 -1
  28. package/lib/commonjs/ui/panel/DebugPanel.js +0 -25
  29. package/lib/commonjs/ui/panel/DebugPanel.js.map +1 -1
  30. package/lib/commonjs/utils/DaemonClient.js +25 -1
  31. package/lib/commonjs/utils/DaemonClient.js.map +1 -1
  32. package/lib/commonjs/utils/debugPreferences.js +2 -1
  33. package/lib/commonjs/utils/debugPreferences.js.map +1 -1
  34. package/lib/commonjs/utils/deviceReport.js +1 -0
  35. package/lib/commonjs/utils/deviceReport.js.map +1 -1
  36. package/lib/module/core/initialize.js +5 -3
  37. package/lib/module/core/initialize.js.map +1 -1
  38. package/lib/module/features/devConnect/DevConnectQrScanner.js +141 -0
  39. package/lib/module/features/devConnect/DevConnectQrScanner.js.map +1 -0
  40. package/lib/module/features/devConnect/DevConnectTab.js +421 -0
  41. package/lib/module/features/devConnect/DevConnectTab.js.map +1 -0
  42. package/lib/module/features/devConnect/cameraKit.js +49 -0
  43. package/lib/module/features/devConnect/cameraKit.js.map +1 -0
  44. package/lib/module/features/devConnect/devConnectPreferences.js +29 -0
  45. package/lib/module/features/devConnect/devConnectPreferences.js.map +1 -0
  46. package/lib/module/features/devConnect/devConnectUtils.js +47 -0
  47. package/lib/module/features/devConnect/devConnectUtils.js.map +1 -0
  48. package/lib/module/features/devConnect/index.js +52 -0
  49. package/lib/module/features/devConnect/index.js.map +1 -0
  50. package/lib/module/features/devConnect/platformDetect.js +26 -0
  51. package/lib/module/features/devConnect/platformDetect.js.map +1 -0
  52. package/lib/module/features/devConnect/types.js +2 -0
  53. package/lib/module/features/devConnect/types.js.map +1 -0
  54. package/lib/module/features/network/NetworkLogTab.js +7 -3
  55. package/lib/module/features/network/NetworkLogTab.js.map +1 -1
  56. package/lib/module/index.js +1 -1
  57. package/lib/module/index.js.map +1 -1
  58. package/lib/module/ui/DebugView.js +1 -0
  59. package/lib/module/ui/DebugView.js.map +1 -1
  60. package/lib/module/ui/panel/DebugPanel.js +1 -26
  61. package/lib/module/ui/panel/DebugPanel.js.map +1 -1
  62. package/lib/module/utils/DaemonClient.js +25 -1
  63. package/lib/module/utils/DaemonClient.js.map +1 -1
  64. package/lib/module/utils/debugPreferences.js +2 -1
  65. package/lib/module/utils/debugPreferences.js.map +1 -1
  66. package/lib/module/utils/deviceReport.js +1 -0
  67. package/lib/module/utils/deviceReport.js.map +1 -1
  68. package/lib/typescript/src/core/initialize.d.ts +1 -0
  69. package/lib/typescript/src/core/initialize.d.ts.map +1 -1
  70. package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts +9 -0
  71. package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts.map +1 -0
  72. package/lib/typescript/src/features/devConnect/DevConnectTab.d.ts +5 -0
  73. package/lib/typescript/src/features/devConnect/DevConnectTab.d.ts.map +1 -0
  74. package/lib/typescript/src/features/devConnect/cameraKit.d.ts +47 -0
  75. package/lib/typescript/src/features/devConnect/cameraKit.d.ts.map +1 -0
  76. package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts +7 -0
  77. package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts.map +1 -0
  78. package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts +12 -0
  79. package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts.map +1 -0
  80. package/lib/typescript/src/features/devConnect/index.d.ts +7 -0
  81. package/lib/typescript/src/features/devConnect/index.d.ts.map +1 -0
  82. package/lib/typescript/src/features/devConnect/platformDetect.d.ts +2 -0
  83. package/lib/typescript/src/features/devConnect/platformDetect.d.ts.map +1 -0
  84. package/lib/typescript/src/features/devConnect/types.d.ts +7 -0
  85. package/lib/typescript/src/features/devConnect/types.d.ts.map +1 -0
  86. package/lib/typescript/src/features/network/NetworkLogTab.d.ts.map +1 -1
  87. package/lib/typescript/src/index.d.ts +2 -0
  88. package/lib/typescript/src/index.d.ts.map +1 -1
  89. package/lib/typescript/src/types/feature.d.ts +1 -1
  90. package/lib/typescript/src/types/feature.d.ts.map +1 -1
  91. package/lib/typescript/src/ui/DebugView.d.ts.map +1 -1
  92. package/lib/typescript/src/ui/panel/DebugPanel.d.ts.map +1 -1
  93. package/lib/typescript/src/utils/DaemonClient.d.ts +1 -0
  94. package/lib/typescript/src/utils/DaemonClient.d.ts.map +1 -1
  95. package/lib/typescript/src/utils/debugPreferences.d.ts +1 -0
  96. package/lib/typescript/src/utils/debugPreferences.d.ts.map +1 -1
  97. package/lib/typescript/src/utils/deviceReport.d.ts +6 -0
  98. package/lib/typescript/src/utils/deviceReport.d.ts.map +1 -1
  99. package/node/daemon/src/console/console.html +166 -27
  100. package/node/daemon/src/store.js +45 -6
  101. package/package.json +15 -3
  102. package/src/core/initialize.ts +7 -1
  103. package/src/features/devConnect/DevConnectQrScanner.tsx +122 -0
  104. package/src/features/devConnect/DevConnectTab.tsx +357 -0
  105. package/src/features/devConnect/cameraKit.ts +93 -0
  106. package/src/features/devConnect/devConnectPreferences.ts +33 -0
  107. package/src/features/devConnect/devConnectUtils.ts +59 -0
  108. package/src/features/devConnect/index.ts +64 -0
  109. package/src/features/devConnect/platformDetect.ts +26 -0
  110. package/src/features/devConnect/types.ts +6 -0
  111. package/src/features/network/NetworkLogTab.tsx +6 -3
  112. package/src/index.ts +2 -0
  113. package/src/types/feature.ts +2 -1
  114. package/src/ui/DebugView.tsx +1 -0
  115. package/src/ui/panel/DebugPanel.tsx +1 -23
  116. package/src/utils/DaemonClient.ts +26 -1
  117. package/src/utils/debugPreferences.ts +1 -0
  118. package/src/utils/deviceReport.ts +8 -1
  119. package/lib/commonjs/ui/panel/StreamingSettingsModal.js +0 -495
  120. package/lib/commonjs/ui/panel/StreamingSettingsModal.js.map +0 -1
  121. package/lib/module/ui/panel/StreamingSettingsModal.js +0 -490
  122. package/lib/module/ui/panel/StreamingSettingsModal.js.map +0 -1
  123. package/lib/typescript/src/ui/panel/StreamingSettingsModal.d.ts +0 -8
  124. package/lib/typescript/src/ui/panel/StreamingSettingsModal.d.ts.map +0 -1
  125. package/src/ui/panel/StreamingSettingsModal.tsx +0 -528
@@ -0,0 +1,47 @@
1
+ import type { ComponentType } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ export interface CameraKitReadCodeEvent {
4
+ nativeEvent?: {
5
+ codeStringValue?: string;
6
+ };
7
+ }
8
+ export interface CameraKitCameraProps {
9
+ style?: StyleProp<ViewStyle>;
10
+ cameraType?: unknown;
11
+ scanBarcode?: boolean;
12
+ onReadCode?: (event: CameraKitReadCodeEvent) => void;
13
+ showFrame?: boolean;
14
+ laserColor?: string;
15
+ frameColor?: string;
16
+ allowedBarcodeTypes?: string[];
17
+ }
18
+ export interface CameraKitModule {
19
+ Camera: ComponentType<CameraKitCameraProps>;
20
+ CameraType?: {
21
+ Back?: unknown;
22
+ };
23
+ }
24
+ export interface ExpoCameraScanResult {
25
+ boundingBox?: unknown;
26
+ cornerPoints?: unknown;
27
+ type?: string;
28
+ value?: string;
29
+ }
30
+ export interface ExpoCameraModule {
31
+ Camera: ComponentType<{
32
+ style?: StyleProp<ViewStyle>;
33
+ onBarCodeScanned?: (result: ExpoCameraScanResult) => void;
34
+ barCodeScannerSettings?: {
35
+ barCodeTypes: string[];
36
+ };
37
+ }>;
38
+ }
39
+ export type ScannerKind = 'camera-kit' | 'expo-camera';
40
+ export interface ScannerModule {
41
+ kind: ScannerKind;
42
+ CameraKit?: CameraKitModule;
43
+ ExpoCamera?: ExpoCameraModule;
44
+ }
45
+ export declare function getScannerModule(): ScannerModule | null;
46
+ export declare function isCameraKitAvailable(): boolean;
47
+ //# sourceMappingURL=cameraKit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cameraKit.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/cameraKit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzD,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE;QACZ,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC5C,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACjC;AAID,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7B,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;QAC1D,sBAAsB,CAAC,EAAE;YAAE,YAAY,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KACrD,CAAC,CAAC;CACJ;AAID,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,aAAa,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAgCD,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAIvD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C"}
@@ -0,0 +1,7 @@
1
+ export interface DevConnectPreferences {
2
+ computerHost: string;
3
+ }
4
+ export declare function loadDevConnectPreferences(): Promise<DevConnectPreferences>;
5
+ export declare function saveComputerHost(value: string): Promise<string | null>;
6
+ export declare function restoreDevConnectSettingsToDaemon(): Promise<void>;
7
+ //# sourceMappingURL=devConnectPreferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devConnectPreferences.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/devConnectPreferences.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAKhF;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAK5E;AAED,wBAAsB,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC,CASvE"}
@@ -0,0 +1,12 @@
1
+ export interface MetroUrls {
2
+ expUrl: string;
3
+ httpUrl: string;
4
+ }
5
+ export interface ParsedMetroQrPayload {
6
+ computerHost: string;
7
+ source: string;
8
+ }
9
+ export declare function normalizeComputerHost(raw: string): string | null;
10
+ export declare function buildMetroUrls(rawHost: string): MetroUrls | null;
11
+ export declare function parseMetroQrPayload(payload: string): ParsedMetroQrPayload | null;
12
+ //# sourceMappingURL=devConnectUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devConnectUtils.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/devConnectUtils.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWhE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQhE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAIhF"}
@@ -0,0 +1,7 @@
1
+ import type { DebugFeature } from '../../types';
2
+ import type { DevConnectState } from './types';
3
+ export type { DevConnectState } from './types';
4
+ export { buildMetroUrls, normalizeComputerHost, parseMetroQrPayload, } from './devConnectUtils';
5
+ export { loadDevConnectPreferences, restoreDevConnectSettingsToDaemon, saveComputerHost, } from './devConnectPreferences';
6
+ export declare const createDevConnectFeature: () => DebugFeature<DevConnectState>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,uBAAuB,QAAO,YAAY,CAAC,eAAe,CA2CtE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isSimulator(): boolean;
2
+ //# sourceMappingURL=platformDetect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platformDetect.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/platformDetect.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,IAAI,OAAO,CAuBrC"}
@@ -0,0 +1,7 @@
1
+ export interface DevConnectState {
2
+ isSimulator: boolean;
3
+ computerHost: string;
4
+ qrAvailable: boolean;
5
+ streaming: boolean;
6
+ }
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkLogTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/network/NetworkLogTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAyB5E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,eAAe,EAAE,CAAC,CA+I7E,CAAC"}
1
+ {"version":3,"file":"NetworkLogTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/network/NetworkLogTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4B5E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,eAAe,EAAE,CAAC,CA+I7E,CAAC"}
@@ -17,6 +17,8 @@ export type { TrackFeatureConfig, TrackEventData } from './features/track';
17
17
  export { createEnvironmentFeature } from './features/environment';
18
18
  export type { EnvironmentFeatureAPI } from './features/environment';
19
19
  export { createClipboardFeature } from './features/clipboard';
20
+ export { createDevConnectFeature } from './features/devConnect';
21
+ export type { DevConnectState } from './features/devConnect';
20
22
  export { useNavigationLogger } from './features/navigation/useNavigationLogger';
21
23
  export { safeStringify } from './utils/safeStringify';
22
24
  export { copyToComputer, logToComputer, fmt } from './utils/copyToComputer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClG,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClG,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { ComponentType } from 'react';
2
2
  export type DebugFeatureListener = () => void;
3
- export type BuiltInFeatureName = 'network' | 'console' | 'zustand' | 'navigation' | 'track' | 'environment' | 'clipboard';
3
+ export type BuiltInFeatureName = 'network' | 'console' | 'zustand' | 'navigation' | 'track' | 'environment' | 'clipboard' | 'devConnect';
4
4
  export interface DebugFeatureRenderProps<TSnapshot = unknown> {
5
5
  snapshot: TSnapshot;
6
6
  feature: DebugFeature<TSnapshot>;
@@ -1 +1 @@
1
- {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../src/types/feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,SAAS,GACT,YAAY,GACZ,OAAO,GACP,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,WAAW,uBAAuB,CAAC,SAAS,GAAG,OAAO;IAC1D,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CAClC;AAGD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEhD,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC;IACrC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,YAAY,CAAC,SAAS,GAAG,OAAO;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACvD"}
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../src/types/feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,SAAS,GACT,YAAY,GACZ,OAAO,GACP,aAAa,GACb,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,uBAAuB,CAAC,SAAS,GAAG,OAAO;IAC1D,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CAClC;AAGD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEhD,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC;IACrC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,YAAY,CAAC,SAAS,GAAG,OAAO;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"DebugView.d.ts","sourceRoot":"","sources":["../../../../src/ui/DebugView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAI1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,mDAAmD;IACnD,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAC/D,sDAAsD;IACtD,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAeD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,OAAO,GACR,EAAE,cAAc,qBAoChB"}
1
+ {"version":3,"file":"DebugView.d.ts","sourceRoot":"","sources":["../../../../src/ui/DebugView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAI1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,mDAAmD;IACnD,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAC/D,sDAAsD;IACtD,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAeD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,OAAO,GACR,EAAE,cAAc,qBAqChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"DebugPanel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/panel/DebugPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAcxE,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,eAAe,qBAiH5E"}
1
+ {"version":3,"file":"DebugPanel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/panel/DebugPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAa9D,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,eAAe,qBAwG5E"}
@@ -96,6 +96,7 @@ export declare class DaemonClient {
96
96
  private _featureProvider;
97
97
  private _onEndpointDetected;
98
98
  private _restorePromise;
99
+ private _sessionId;
99
100
  constructor(options: DaemonClientOptions);
100
101
  getSettings(): DaemonSettings;
101
102
  configure(settings: DaemonSettings): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DaemonClient.d.ts","sourceRoot":"","sources":["../../../../src/utils/DaemonClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DaemonClient.d.ts","sourceRoot":"","sources":["../../../../src/utils/DaemonClient.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,6 @@ export declare const KEYS: {
6
6
  readonly consoleLogs: "@react_native_debug_toolkit/console_logs";
7
7
  readonly networkLogs: "@react_native_debug_toolkit/network_logs";
8
8
  readonly trackLogs: "@react_native_debug_toolkit/track_logs";
9
+ readonly computerHost: "@react_native_debug_toolkit/computer_host";
9
10
  };
10
11
  //# sourceMappingURL=debugPreferences.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"debugPreferences.d.ts","sourceRoot":"","sources":["../../../../src/utils/debugPreferences.ts"],"names":[],"mappings":"AAgBA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWvE;AAED,eAAO,MAAM,IAAI;;;;;;CAMP,CAAC"}
1
+ {"version":3,"file":"debugPreferences.d.ts","sourceRoot":"","sources":["../../../../src/utils/debugPreferences.ts"],"names":[],"mappings":"AAgBA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWvE;AAED,eAAO,MAAM,IAAI;;;;;;;CAOP,CAAC"}
@@ -10,12 +10,18 @@ export interface DeviceInfo {
10
10
  osVersion: string;
11
11
  appVersion: string;
12
12
  }
13
+ export interface SessionInfo {
14
+ id: string;
15
+ startedAt: number;
16
+ }
13
17
  export interface DebugDeviceReport {
14
18
  version: 2;
15
19
  device: DeviceInfo;
20
+ session?: SessionInfo;
16
21
  logs: Record<string, unknown[] | undefined>;
17
22
  }
18
23
  export declare function createDebugDeviceReport(options?: DebugDeviceReportOptions & {
19
24
  featureProvider?: FeatureDataProvider;
25
+ session?: SessionInfo;
20
26
  }): DebugDeviceReport;
21
27
  //# sourceMappingURL=deviceReport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deviceReport.d.ts","sourceRoot":"","sources":["../../../../src/utils/deviceReport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAOpD,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;CAC7C;AAuID,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAAwB,GAAG;IAAE,eAAe,CAAC,EAAE,mBAAmB,CAAA;CAAO,GACjF,iBAAiB,CAwCnB"}
1
+ {"version":3,"file":"deviceReport.d.ts","sourceRoot":"","sources":["../../../../src/utils/deviceReport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAOpD,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;CAC7C;AAuID,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAAwB,GAAG;IAAE,eAAe,CAAC,EAAE,mBAAmB,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAO,GACxG,iBAAiB,CAyCnB"}
@@ -346,6 +346,7 @@ header h1 span{color:var(--text3);font-weight:400}
346
346
  padding:0 8px;height:100%;display:flex;align-items:center;justify-content:center;
347
347
  color:var(--text3);font-size:10px;transition:transform .2s,color .15s;
348
348
  }
349
+ .log-expand.open{transform:rotate(90deg)}
349
350
  .log-entry:hover .log-expand{color:var(--cyan)}
350
351
  .log-entry.expanded .log-expand{transform:rotate(90deg);color:var(--cyan)}
351
352
 
@@ -363,15 +364,20 @@ header h1 span{color:var(--text3);font-weight:400}
363
364
  .detail-sections{display:flex;flex-direction:column;gap:10px}
364
365
  .detail-section{
365
366
  border:1px solid var(--border);border-radius:var(--radius);
366
- background:rgba(8,12,22,.35);overflow:hidden;
367
+ background:var(--bg);overflow:hidden;
367
368
  }
368
369
  .detail-section-header{
369
370
  display:flex;align-items:center;justify-content:space-between;
370
- padding:7px 12px;border-bottom:1px solid var(--border);
371
- background:rgba(0,229,255,.03);
371
+ padding:9px 14px 9px 18px;border-bottom:1px solid var(--border);
372
+ background:linear-gradient(135deg,rgba(0,229,255,.07) 0%,rgba(0,229,255,.02) 100%);
373
+ position:relative;
374
+ }
375
+ .detail-section-header::before{
376
+ content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
377
+ background:var(--cyan);border-radius:0 2px 2px 0;
372
378
  }
373
379
  .detail-section-title{
374
- font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
380
+ font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;
375
381
  color:var(--cyan);font-family:var(--font-mono);
376
382
  }
377
383
  .detail-section-copy{
@@ -380,7 +386,7 @@ header h1 span{color:var(--text3);font-weight:400}
380
386
  transition:color .15s;
381
387
  }
382
388
  .detail-section-copy:hover{color:var(--cyan)}
383
- .detail-section-body{padding:0}
389
+ .detail-section-body{padding:10px 14px 10px 18px}
384
390
 
385
391
  /* Detail key-value table */
386
392
  .detail-table{width:100%;border-collapse:collapse}
@@ -429,25 +435,30 @@ header h1 span{color:var(--text3);font-weight:400}
429
435
  .network-meta-line span{white-space:nowrap}
430
436
 
431
437
  /* Collapsible sections */
432
- .collapse-section{border:1px solid var(--border);border-radius:var(--radius);background:rgba(8,12,22,.35);overflow:hidden;margin-bottom:0}
438
+ .collapse-section{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);overflow:hidden;margin-bottom:0}
433
439
  .collapse-header{
434
440
  display:flex;align-items:center;justify-content:space-between;
435
- padding:7px 12px;border-bottom:1px solid var(--border);
436
- background:rgba(0,229,255,.03);cursor:pointer;user-select:none;
441
+ padding:9px 14px 9px 18px;border-bottom:1px solid var(--border);
442
+ background:linear-gradient(135deg,rgba(0,229,255,.07) 0%,rgba(0,229,255,.02) 100%);
443
+ cursor:pointer;user-select:none;position:relative;
444
+ }
445
+ .collapse-header::before{
446
+ content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
447
+ background:var(--cyan);border-radius:0 2px 2px 0;
437
448
  }
438
- .collapse-header:hover{background:rgba(0,229,255,.06)}
439
- .collapse-header-left{display:flex;align-items:center;gap:6px}
449
+ .collapse-header:hover{background:linear-gradient(135deg,rgba(0,229,255,.12) 0%,rgba(0,229,255,.04) 100%)}
450
+ .collapse-header-left{display:flex;align-items:center;gap:8px}
440
451
  .collapse-arrow{
441
- font-size:9px;color:var(--text3);transition:transform .2s;display:inline-block;
452
+ font-size:10px;color:var(--cyan);transition:transform .2s;display:inline-block;opacity:.7;
442
453
  }
443
- .collapse-arrow.open{transform:rotate(90deg)}
454
+ .collapse-arrow.open{transform:rotate(90deg);opacity:1}
444
455
  .collapse-title{
445
- font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
456
+ font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;
446
457
  color:var(--cyan);font-family:var(--font-mono);
447
458
  }
448
459
  .collapse-body{display:none;padding:0}
449
460
  .collapse-body.open{display:block}
450
- .section-body-inner{padding:4px 0}
461
+ .section-body-inner{padding:10px 14px 10px 18px}
451
462
  .method-badge{
452
463
  font-family:var(--font-mono);font-size:11px;font-weight:700;
453
464
  padding:3px 10px;border-radius:3px;letter-spacing:.04em;
@@ -472,6 +483,23 @@ header h1 span{color:var(--text3);font-weight:400}
472
483
  .nav-arrow{color:var(--cyan);font-size:14px}
473
484
  .nav-to{color:var(--text);font-weight:500}
474
485
 
486
+ /* Session divider */
487
+ .session-divider{
488
+ display:flex;align-items:center;gap:12px;
489
+ padding:10px 0;margin:6px 0;
490
+ }
491
+ .session-divider-line{flex:1;height:1px;background:var(--border2)}
492
+ .session-divider-label{
493
+ font-family:var(--font-mono);font-size:10px;
494
+ color:var(--text3);white-space:nowrap;letter-spacing:.04em;
495
+ display:flex;align-items:center;gap:6px;
496
+ }
497
+ .session-divider-dot{
498
+ width:5px;height:5px;border-radius:50%;
499
+ background:var(--amber);flex-shrink:0;
500
+ }
501
+ .session-new .session-divider-dot{background:var(--cyan)}
502
+
475
503
  /* Entry footer */
476
504
  .entry-footer{
477
505
  display:flex;align-items:center;gap:8px;
@@ -691,11 +719,18 @@ mark{
691
719
  return labels[type] || (type ? type.charAt(0).toUpperCase() + type.slice(1) : 'Unknown');
692
720
  }
693
721
 
722
+ function capitalizePlatform(p) {
723
+ if (p === 'ios') return 'iOS';
724
+ if (p === 'android') return 'Android';
725
+ var s = String(p || 'unknown');
726
+ return s.charAt(0).toUpperCase() + s.slice(1);
727
+ }
728
+
694
729
  function formatDevice(device) {
695
730
  if (!device || typeof device !== 'object') return 'Unknown device';
696
731
  var parts = [];
697
- if (device.platform) parts.push(String(device.platform).toUpperCase());
698
- if (device.model) parts.push(String(device.model));
732
+ if (device.platform) parts.push(capitalizePlatform(device.platform));
733
+ if (device.model && String(device.model) !== 'unknown') parts.push(String(device.model));
699
734
  if (device.osVersion) parts.push('OS ' + String(device.osVersion));
700
735
  return parts.length ? parts.join(' / ') : 'Unknown device';
701
736
  }
@@ -884,6 +919,35 @@ mark{
884
919
  entry.data);
885
920
  }
886
921
 
922
+ function estimateByteSize(value) {
923
+ if (value == null) return 0;
924
+ if (typeof value === 'string') return new Blob([value]).size;
925
+ try { return new Blob([JSON.stringify(value)]).size; } catch { return 0; }
926
+ }
927
+
928
+ function formatSize(bytes) {
929
+ if (!bytes || bytes <= 0) return '';
930
+ if (bytes < 1024) return bytes + ' B';
931
+ if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB';
932
+ return (bytes / (1024 * 1024)).toFixed(1) + ' MB';
933
+ }
934
+
935
+ function getNetworkSize(entry) {
936
+ var request = readObject(entry.request) || entry;
937
+ var response = readObject(entry.response);
938
+ var respSize = 0;
939
+ if (response) {
940
+ var headers = response.headers;
941
+ if (headers) {
942
+ var cl = headers['content-length'] || headers['Content-Length'] || headers['contentLength'] || headers['ContentLength'];
943
+ if (cl) { var n = parseInt(cl, 10); if (n > 0) respSize = n; }
944
+ }
945
+ if (!respSize && response.data != null) respSize = estimateByteSize(response.data);
946
+ }
947
+ var reqSize = request.body != null ? estimateByteSize(request.body) : 0;
948
+ return { req: reqSize, res: respSize };
949
+ }
950
+
887
951
  function renderNetworkDetails(entry) {
888
952
  var request = readObject(entry.request) || entry;
889
953
  var response = readObject(entry.response);
@@ -900,6 +964,11 @@ mark{
900
964
  metaParts.push(response.status + (response.statusText ? ' ' + response.statusText : ''));
901
965
  }
902
966
  if (entry.duration !== undefined) metaParts.push(entry.duration + 'ms');
967
+ var sizes = getNetworkSize(entry);
968
+ var sizeParts = [];
969
+ if (sizes.req > 0) sizeParts.push('req: ' + formatSize(sizes.req));
970
+ if (sizes.res > 0) sizeParts.push('res: ' + formatSize(sizes.res));
971
+ if (sizeParts.length) metaParts.push(sizeParts.join(' / '));
903
972
  if (entry.timestamp) metaParts.push(formatTimeShort(new Date(entry.timestamp).toISOString()));
904
973
  if (metaParts.length) {
905
974
  html += '<div class="network-meta-line">' + metaParts.map(function(p) { return '<span>' + escapeHtml(p) + '</span>'; }).join('') + '</div>';
@@ -937,9 +1006,37 @@ mark{
937
1006
  html += renderCollapsibleSection('Response Headers', resHeadersContent, response.headers || null, true);
938
1007
  }
939
1008
 
1009
+ // cURL command
1010
+ var curlStr = buildCurlCommand(entry);
1011
+ if (curlStr) {
1012
+ var curlContent = '<pre class="json-block" style="max-height:none;font-size:11px;line-height:1.6">' + escapeHtml(curlStr) + '</pre>';
1013
+ html += renderCollapsibleSection('cURL', curlContent, curlStr, true);
1014
+ }
1015
+
940
1016
  return html;
941
1017
  }
942
1018
 
1019
+ // Keep in sync with src/features/network/NetworkLogTab.tsx buildCurl()
1020
+ function buildCurlCommand(entry) {
1021
+ var request = readObject(entry.request) || entry;
1022
+ if (!request.url) return '';
1023
+ var method = (request.method || 'GET').toUpperCase();
1024
+ function q(s) { return String(s).replace(/'/g, "'\\''"); }
1025
+ var parts = ["curl -X " + method + " '" + q(request.url) + "'"];
1026
+ var headers = request.headers;
1027
+ if (headers && typeof headers === 'object') {
1028
+ Object.keys(headers).forEach(function(k) {
1029
+ parts.push(" -H '" + q(k) + ": " + q(headers[k]) + "'");
1030
+ });
1031
+ }
1032
+ var body = request.body;
1033
+ if (body != null) {
1034
+ var bodyStr = typeof body === 'string' ? body : JSON.stringify(body);
1035
+ parts.push(" -d '" + q(bodyStr) + "'");
1036
+ }
1037
+ return parts.join(' \\\n');
1038
+ }
1039
+
943
1040
  function renderNavigationDetails(entry) {
944
1041
  var hero = '<div class="nav-hero">';
945
1042
  if (entry.from || entry.path) hero += '<span class="nav-from">' + escapeHtml(entry.from || entry.path || '-') + '</span>';
@@ -1060,7 +1157,7 @@ mark{
1060
1157
  html += '<div><div class="device-title">' + escapeHtml(deviceText) + '</div>';
1061
1158
  html += '<div class="device-subtitle">IP ' + escapeHtml(ipText) + '</div></div>';
1062
1159
  html += '<div class="device-meta-group">';
1063
- html += '<div class="device-meta-line"><strong>Device</strong>' + escapeHtml(deviceLog.deviceId) + '</div>';
1160
+ html += '<div class="device-meta-line"><strong>ID</strong>' + escapeHtml(deviceLog.deviceId) + '</div>';
1064
1161
  html += '<div class="device-meta-line"><strong>Last seen</strong>' + formatTime(deviceLog.lastSeenAt || deviceLog.receivedAt) + '</div>';
1065
1162
  html += '</div>';
1066
1163
  html += '<div class="device-tags">' + renderDeviceTags(lc) + '</div>';
@@ -1121,7 +1218,7 @@ mark{
1121
1218
  if (device && typeof device === 'object') {
1122
1219
  html += '<div class="device-info">';
1123
1220
  var pClass = device.platform === 'ios' ? 'platform-ios' : device.platform === 'android' ? 'platform-android' : '';
1124
- html += '<span class="device-badge ' + pClass + '">' + escapeHtml((device.platform || 'unknown').toUpperCase()) + '</span>';
1221
+ html += '<span class="device-badge ' + pClass + '">' + escapeHtml(capitalizePlatform(device.platform)) + '</span>';
1125
1222
  if (device.model) html += '<span class="device-badge">' + escapeHtml(device.model) + '</span>';
1126
1223
  if (device.osVersion) html += '<span class="device-badge">OS ' + escapeHtml(device.osVersion) + '</span>';
1127
1224
  if (device.appVersion) html += '<span class="device-badge">v' + escapeHtml(device.appVersion) + '</span>';
@@ -1168,10 +1265,6 @@ mark{
1168
1265
 
1169
1266
  // Actions
1170
1267
  html += '<div class="actions">';
1171
- html += '<button class="btn" onclick="copyJSON()">';
1172
- html += '<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>';
1173
- html += 'Copy JSON</button>';
1174
- html += '<span style="flex:1"></span>';
1175
1268
  html += '<span style="font-size:10px;color:var(--text3);font-family:var(--font-mono)"><span class="kbd">/</span> search &nbsp; <span class="kbd">j</span><span class="kbd">k</span> navigate &nbsp; <span class="kbd">Enter</span> expand &nbsp; <span class="kbd">Esc</span> back</span>';
1176
1269
  html += '</div>';
1177
1270
 
@@ -1260,14 +1353,11 @@ mark{
1260
1353
  html += '</div>';
1261
1354
  html += '<div class="log-status">' + statusBadge(entry) + '</div>';
1262
1355
  html += '<div class="log-copy" onclick="event.stopPropagation();copyEntryJSON(\'' + rowId + '\')"><button class="copy-btn" title="Copy entry JSON">&#9112;</button></div>';
1263
- html += '<div class="log-expand">' + (isExpanded ? '&#9654;' : '&#9654;') + '</div>';
1356
+ html += '<div class="log-expand' + (isExpanded ? ' open' : '') + '" id="arrow-' + rowId + '">&#9654;</div>';
1264
1357
  html += '</div>';
1265
- html += '<div class="log-detail' + (isExpanded ? '' : '') + '" id="detail-' + rowId + '">';
1358
+ html += '<div class="log-detail" id="detail-' + rowId + '">';
1266
1359
  html += '<div class="log-detail-inner"><div class="detail-sections">';
1267
1360
  html += renderLogDetails(entry, lt);
1268
- html += '<div class="entry-footer">';
1269
- html += '<button class="btn btn-sm" onclick="event.stopPropagation();copyEntryJSON(\'' + rowId + '\')">&#9112; Copy JSON</button>';
1270
- html += '</div>';
1271
1361
  html += '</div></div></div>';
1272
1362
  html += '</div>';
1273
1363
  return html;
@@ -1292,8 +1382,24 @@ mark{
1292
1382
  }
1293
1383
 
1294
1384
  focusedIndex = -1;
1385
+ var currentSessionId = null;
1386
+ var knownSessionIds = new Set();
1387
+ if (currentDevice && currentDevice.session) {
1388
+ knownSessionIds.add(currentDevice.session.id);
1389
+ }
1295
1390
  var html = '<div class="log-list">';
1296
1391
  entries.forEach(function(item, i) {
1392
+ var entrySessionId = item.entry && typeof item.entry === 'object' ? item.entry.sessionId : null;
1393
+ if (entrySessionId && entrySessionId !== currentSessionId) {
1394
+ var isNewSession = knownSessionIds.has(entrySessionId);
1395
+ var label = isNewSession ? 'Current session' : ('Session ' + entrySessionId.slice(0, 8));
1396
+ html += '<div class="session-divider' + (isNewSession ? ' session-new' : '') + '">';
1397
+ html += '<div class="session-divider-line"></div>';
1398
+ html += '<span class="session-divider-label"><span class="session-divider-dot"></span>' + label + '</span>';
1399
+ html += '<div class="session-divider-line"></div>';
1400
+ html += '</div>';
1401
+ currentSessionId = entrySessionId;
1402
+ }
1297
1403
  var absoluteIndex = startIndex + i;
1298
1404
  var rowId = getLogEntryKey(item.entry, item.type, absoluteIndex);
1299
1405
  html += renderLogEntryHtml(item.entry, item.type, rowId, i, expandedRows[rowId]);
@@ -1418,12 +1524,15 @@ mark{
1418
1524
  window.toggleRow = function(rowId) {
1419
1525
  var entry = document.getElementById('entry-' + rowId);
1420
1526
  var detail = document.getElementById('detail-' + rowId);
1527
+ var arrow = document.getElementById('arrow-' + rowId);
1421
1528
  if (!entry || !detail) return;
1422
1529
  expandedRows[rowId] = !expandedRows[rowId];
1423
1530
  if (expandedRows[rowId]) {
1424
1531
  entry.classList.add('expanded');
1532
+ if (arrow) arrow.classList.add('open');
1425
1533
  } else {
1426
1534
  entry.classList.remove('expanded');
1535
+ if (arrow) arrow.classList.remove('open');
1427
1536
  }
1428
1537
  };
1429
1538
 
@@ -1670,7 +1779,37 @@ mark{
1670
1779
  }
1671
1780
 
1672
1781
  var html = '';
1782
+ var liveCurrentSessionId = null;
1783
+ var liveKnownSessionIds = new Set();
1784
+ if (currentDevice && currentDevice.session) {
1785
+ liveKnownSessionIds.add(currentDevice.session.id);
1786
+ }
1787
+ // find existing sessionId from first entry in list for divider continuity
1788
+ var existingFirst = list.querySelector('.log-entry');
1789
+ if (existingFirst) {
1790
+ var existingIndex = parseInt(existingFirst.getAttribute('data-index'), 10);
1791
+ var existingEntries = collectLogEntries(
1792
+ currentDevice.report ? currentDevice.report.logs : {},
1793
+ readVisibleLogOptions().type,
1794
+ readVisibleLogOptions().failedOnly
1795
+ );
1796
+ var existingSlice = existingEntries.slice(0, PAGE_SIZE);
1797
+ if (existingSlice.length > 0 && existingSlice[0].entry && typeof existingSlice[0].entry === 'object') {
1798
+ liveCurrentSessionId = existingSlice[0].entry.sessionId || null;
1799
+ }
1800
+ }
1673
1801
  items.forEach(function(item) {
1802
+ var entrySessionId = item.entry && typeof item.entry === 'object' ? item.entry.sessionId : null;
1803
+ if (entrySessionId && entrySessionId !== liveCurrentSessionId) {
1804
+ var isNewSession = liveKnownSessionIds.has(entrySessionId);
1805
+ var label = isNewSession ? 'Current session' : ('Session ' + entrySessionId.slice(0, 8));
1806
+ html += '<div class="session-divider' + (isNewSession ? ' session-new' : '') + '">';
1807
+ html += '<div class="session-divider-line"></div>';
1808
+ html += '<span class="session-divider-label"><span class="session-divider-dot"></span>' + label + '</span>';
1809
+ html += '<div class="session-divider-line"></div>';
1810
+ html += '</div>';
1811
+ liveCurrentSessionId = entrySessionId;
1812
+ }
1674
1813
  var rowId = getLogEntryKey(item.entry, item.type, 'live-' + (liveSequence += 1));
1675
1814
  html += renderLogEntryHtml(item.entry, item.type, rowId, 0, false);
1676
1815
  });