react-native-debug-toolkit 3.3.8 → 3.5.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 (192) hide show
  1. package/lib/commonjs/constants/logLevels.js +19 -0
  2. package/lib/commonjs/constants/logLevels.js.map +1 -0
  3. package/lib/commonjs/core/initialize.js +30 -19
  4. package/lib/commonjs/core/initialize.js.map +1 -1
  5. package/lib/commonjs/features/console/ConsoleLogTab.js +4 -15
  6. package/lib/commonjs/features/console/ConsoleLogTab.js.map +1 -1
  7. package/lib/commonjs/features/console/index.js +15 -8
  8. package/lib/commonjs/features/console/index.js.map +1 -1
  9. package/lib/commonjs/features/network/NetworkLogTab.js +91 -93
  10. package/lib/commonjs/features/network/NetworkLogTab.js.map +1 -1
  11. package/lib/commonjs/features/network/index.js +7 -4
  12. package/lib/commonjs/features/network/index.js.map +1 -1
  13. package/lib/commonjs/features/sessionHistory/SessionHistoryTab.js +1044 -0
  14. package/lib/commonjs/features/sessionHistory/SessionHistoryTab.js.map +1 -0
  15. package/lib/commonjs/features/sessionHistory/index.js +103 -0
  16. package/lib/commonjs/features/sessionHistory/index.js.map +1 -0
  17. package/lib/commonjs/features/track/index.js +4 -3
  18. package/lib/commonjs/features/track/index.js.map +1 -1
  19. package/lib/commonjs/index.js +20 -0
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/commonjs/ui/DebugView.js +1 -0
  22. package/lib/commonjs/ui/DebugView.js.map +1 -1
  23. package/lib/commonjs/ui/panel/DebugPanel.js +67 -34
  24. package/lib/commonjs/ui/panel/DebugPanel.js.map +1 -1
  25. package/lib/commonjs/ui/panel/FeatureIntroCard.js +131 -0
  26. package/lib/commonjs/ui/panel/FeatureIntroCard.js.map +1 -0
  27. package/lib/commonjs/ui/panel/FeatureRail.js +163 -0
  28. package/lib/commonjs/ui/panel/FeatureRail.js.map +1 -0
  29. package/lib/commonjs/ui/panel/FloatPanelView.js +147 -22
  30. package/lib/commonjs/ui/panel/FloatPanelView.js.map +1 -1
  31. package/lib/commonjs/ui/panel/buildFeatureSummary.js +207 -0
  32. package/lib/commonjs/ui/panel/buildFeatureSummary.js.map +1 -0
  33. package/lib/commonjs/ui/panel/filterFeatureSnapshot.js +43 -0
  34. package/lib/commonjs/ui/panel/filterFeatureSnapshot.js.map +1 -0
  35. package/lib/commonjs/ui/theme/colors.js +6 -0
  36. package/lib/commonjs/ui/theme/colors.js.map +1 -1
  37. package/lib/commonjs/utils/DaemonClient.js +30 -8
  38. package/lib/commonjs/utils/DaemonClient.js.map +1 -1
  39. package/lib/commonjs/utils/SessionManager.js +132 -0
  40. package/lib/commonjs/utils/SessionManager.js.map +1 -0
  41. package/lib/commonjs/utils/StorageAdapter.js +104 -0
  42. package/lib/commonjs/utils/StorageAdapter.js.map +1 -0
  43. package/lib/commonjs/utils/createChannelFeature.js +22 -5
  44. package/lib/commonjs/utils/createChannelFeature.js.map +1 -1
  45. package/lib/commonjs/utils/createPersistedObservableStore.js +14 -8
  46. package/lib/commonjs/utils/createPersistedObservableStore.js.map +1 -1
  47. package/lib/commonjs/utils/debugPreferences.js +28 -5
  48. package/lib/commonjs/utils/debugPreferences.js.map +1 -1
  49. package/lib/commonjs/utils/deviceReport.js +5 -1
  50. package/lib/commonjs/utils/deviceReport.js.map +1 -1
  51. package/lib/commonjs/utils/logRuntime.js +32 -0
  52. package/lib/commonjs/utils/logRuntime.js.map +1 -0
  53. package/lib/module/constants/logLevels.js +15 -0
  54. package/lib/module/constants/logLevels.js.map +1 -0
  55. package/lib/module/core/initialize.js +30 -19
  56. package/lib/module/core/initialize.js.map +1 -1
  57. package/lib/module/features/console/ConsoleLogTab.js +1 -12
  58. package/lib/module/features/console/ConsoleLogTab.js.map +1 -1
  59. package/lib/module/features/console/index.js +15 -8
  60. package/lib/module/features/console/index.js.map +1 -1
  61. package/lib/module/features/network/NetworkLogTab.js +91 -93
  62. package/lib/module/features/network/NetworkLogTab.js.map +1 -1
  63. package/lib/module/features/network/index.js +7 -4
  64. package/lib/module/features/network/index.js.map +1 -1
  65. package/lib/module/features/sessionHistory/SessionHistoryTab.js +1039 -0
  66. package/lib/module/features/sessionHistory/SessionHistoryTab.js.map +1 -0
  67. package/lib/module/features/sessionHistory/index.js +99 -0
  68. package/lib/module/features/sessionHistory/index.js.map +1 -0
  69. package/lib/module/features/track/index.js +4 -3
  70. package/lib/module/features/track/index.js.map +1 -1
  71. package/lib/module/index.js +3 -0
  72. package/lib/module/index.js.map +1 -1
  73. package/lib/module/ui/DebugView.js +1 -0
  74. package/lib/module/ui/DebugView.js.map +1 -1
  75. package/lib/module/ui/panel/DebugPanel.js +67 -34
  76. package/lib/module/ui/panel/DebugPanel.js.map +1 -1
  77. package/lib/module/ui/panel/FeatureIntroCard.js +126 -0
  78. package/lib/module/ui/panel/FeatureIntroCard.js.map +1 -0
  79. package/lib/module/ui/panel/FeatureRail.js +158 -0
  80. package/lib/module/ui/panel/FeatureRail.js.map +1 -0
  81. package/lib/module/ui/panel/FloatPanelView.js +148 -23
  82. package/lib/module/ui/panel/FloatPanelView.js.map +1 -1
  83. package/lib/module/ui/panel/buildFeatureSummary.js +203 -0
  84. package/lib/module/ui/panel/buildFeatureSummary.js.map +1 -0
  85. package/lib/module/ui/panel/filterFeatureSnapshot.js +39 -0
  86. package/lib/module/ui/panel/filterFeatureSnapshot.js.map +1 -0
  87. package/lib/module/ui/theme/colors.js +6 -0
  88. package/lib/module/ui/theme/colors.js.map +1 -1
  89. package/lib/module/utils/DaemonClient.js +30 -8
  90. package/lib/module/utils/DaemonClient.js.map +1 -1
  91. package/lib/module/utils/SessionManager.js +127 -0
  92. package/lib/module/utils/SessionManager.js.map +1 -0
  93. package/lib/module/utils/StorageAdapter.js +96 -0
  94. package/lib/module/utils/StorageAdapter.js.map +1 -0
  95. package/lib/module/utils/createChannelFeature.js +22 -5
  96. package/lib/module/utils/createChannelFeature.js.map +1 -1
  97. package/lib/module/utils/createPersistedObservableStore.js +14 -8
  98. package/lib/module/utils/createPersistedObservableStore.js.map +1 -1
  99. package/lib/module/utils/debugPreferences.js +27 -5
  100. package/lib/module/utils/debugPreferences.js.map +1 -1
  101. package/lib/module/utils/deviceReport.js +4 -1
  102. package/lib/module/utils/deviceReport.js.map +1 -1
  103. package/lib/module/utils/logRuntime.js +26 -0
  104. package/lib/module/utils/logRuntime.js.map +1 -0
  105. package/lib/typescript/src/constants/logLevels.d.ts +3 -0
  106. package/lib/typescript/src/constants/logLevels.d.ts.map +1 -0
  107. package/lib/typescript/src/core/initialize.d.ts +4 -0
  108. package/lib/typescript/src/core/initialize.d.ts.map +1 -1
  109. package/lib/typescript/src/features/console/ConsoleLogTab.d.ts.map +1 -1
  110. package/lib/typescript/src/features/console/index.d.ts +2 -1
  111. package/lib/typescript/src/features/console/index.d.ts.map +1 -1
  112. package/lib/typescript/src/features/network/NetworkLogTab.d.ts.map +1 -1
  113. package/lib/typescript/src/features/network/index.d.ts +2 -1
  114. package/lib/typescript/src/features/network/index.d.ts.map +1 -1
  115. package/lib/typescript/src/features/sessionHistory/SessionHistoryTab.d.ts +20 -0
  116. package/lib/typescript/src/features/sessionHistory/SessionHistoryTab.d.ts.map +1 -0
  117. package/lib/typescript/src/features/sessionHistory/index.d.ts +4 -0
  118. package/lib/typescript/src/features/sessionHistory/index.d.ts.map +1 -0
  119. package/lib/typescript/src/features/track/index.d.ts +2 -1
  120. package/lib/typescript/src/features/track/index.d.ts.map +1 -1
  121. package/lib/typescript/src/index.d.ts +4 -0
  122. package/lib/typescript/src/index.d.ts.map +1 -1
  123. package/lib/typescript/src/types/feature.d.ts +1 -1
  124. package/lib/typescript/src/types/feature.d.ts.map +1 -1
  125. package/lib/typescript/src/types/index.d.ts +2 -0
  126. package/lib/typescript/src/types/index.d.ts.map +1 -1
  127. package/lib/typescript/src/ui/DebugView.d.ts.map +1 -1
  128. package/lib/typescript/src/ui/panel/DebugPanel.d.ts +3 -1
  129. package/lib/typescript/src/ui/panel/DebugPanel.d.ts.map +1 -1
  130. package/lib/typescript/src/ui/panel/FeatureIntroCard.d.ts +11 -0
  131. package/lib/typescript/src/ui/panel/FeatureIntroCard.d.ts.map +1 -0
  132. package/lib/typescript/src/ui/panel/FeatureRail.d.ts +16 -0
  133. package/lib/typescript/src/ui/panel/FeatureRail.d.ts.map +1 -0
  134. package/lib/typescript/src/ui/panel/FloatPanelView.d.ts.map +1 -1
  135. package/lib/typescript/src/ui/panel/buildFeatureSummary.d.ts +13 -0
  136. package/lib/typescript/src/ui/panel/buildFeatureSummary.d.ts.map +1 -0
  137. package/lib/typescript/src/ui/panel/filterFeatureSnapshot.d.ts +3 -0
  138. package/lib/typescript/src/ui/panel/filterFeatureSnapshot.d.ts.map +1 -0
  139. package/lib/typescript/src/ui/theme/colors.d.ts +5 -0
  140. package/lib/typescript/src/ui/theme/colors.d.ts.map +1 -1
  141. package/lib/typescript/src/utils/DaemonClient.d.ts +7 -1
  142. package/lib/typescript/src/utils/DaemonClient.d.ts.map +1 -1
  143. package/lib/typescript/src/utils/SessionManager.d.ts +30 -0
  144. package/lib/typescript/src/utils/SessionManager.d.ts.map +1 -0
  145. package/lib/typescript/src/utils/StorageAdapter.d.ts +38 -0
  146. package/lib/typescript/src/utils/StorageAdapter.d.ts.map +1 -0
  147. package/lib/typescript/src/utils/createChannelFeature.d.ts +2 -0
  148. package/lib/typescript/src/utils/createChannelFeature.d.ts.map +1 -1
  149. package/lib/typescript/src/utils/createPersistedObservableStore.d.ts +4 -1
  150. package/lib/typescript/src/utils/createPersistedObservableStore.d.ts.map +1 -1
  151. package/lib/typescript/src/utils/debugPreferences.d.ts +1 -3
  152. package/lib/typescript/src/utils/debugPreferences.d.ts.map +1 -1
  153. package/lib/typescript/src/utils/deviceReport.d.ts +1 -0
  154. package/lib/typescript/src/utils/deviceReport.d.ts.map +1 -1
  155. package/lib/typescript/src/utils/logRuntime.d.ts +13 -0
  156. package/lib/typescript/src/utils/logRuntime.d.ts.map +1 -0
  157. package/package.json +9 -1
  158. package/src/constants/logLevels.ts +13 -0
  159. package/src/core/initialize.ts +49 -25
  160. package/src/features/console/ConsoleLogTab.tsx +1 -14
  161. package/src/features/console/index.ts +18 -8
  162. package/src/features/network/NetworkLogTab.tsx +61 -71
  163. package/src/features/network/index.ts +12 -3
  164. package/src/features/sessionHistory/SessionHistoryTab.tsx +691 -0
  165. package/src/features/sessionHistory/index.ts +102 -0
  166. package/src/features/track/index.ts +10 -3
  167. package/src/index.ts +11 -0
  168. package/src/types/feature.ts +2 -1
  169. package/src/types/index.ts +10 -0
  170. package/src/ui/DebugView.tsx +1 -0
  171. package/src/ui/panel/DebugPanel.tsx +60 -30
  172. package/src/ui/panel/FeatureIntroCard.tsx +127 -0
  173. package/src/ui/panel/FeatureRail.tsx +165 -0
  174. package/src/ui/panel/FloatPanelView.tsx +154 -15
  175. package/src/ui/panel/buildFeatureSummary.ts +288 -0
  176. package/src/ui/panel/filterFeatureSnapshot.ts +51 -0
  177. package/src/ui/theme/colors.ts +7 -0
  178. package/src/utils/DaemonClient.ts +33 -5
  179. package/src/utils/SessionManager.ts +174 -0
  180. package/src/utils/StorageAdapter.ts +135 -0
  181. package/src/utils/createChannelFeature.ts +28 -6
  182. package/src/utils/createPersistedObservableStore.ts +18 -10
  183. package/src/utils/debugPreferences.ts +38 -7
  184. package/src/utils/deviceReport.ts +5 -1
  185. package/src/utils/logRuntime.ts +39 -0
  186. package/lib/commonjs/ui/panel/FeatureTabBar.js +0 -182
  187. package/lib/commonjs/ui/panel/FeatureTabBar.js.map +0 -1
  188. package/lib/module/ui/panel/FeatureTabBar.js +0 -177
  189. package/lib/module/ui/panel/FeatureTabBar.js.map +0 -1
  190. package/lib/typescript/src/ui/panel/FeatureTabBar.d.ts +0 -13
  191. package/lib/typescript/src/ui/panel/FeatureTabBar.d.ts.map +0 -1
  192. package/src/ui/panel/FeatureTabBar.tsx +0 -204
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, Text, StyleSheet, ScrollView, Pressable } from 'react-native';
5
+ import { Colors } from '../theme/colors';
6
+
7
+ // ─── Label Model ──────────────────────────────────────
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const SHORT_LABEL_MAP = {
10
+ network: 'network',
11
+ console: 'console',
12
+ native: 'native',
13
+ navigation: 'nav',
14
+ zustand: 'zustand',
15
+ track: 'track',
16
+ clipboard: 'clip',
17
+ environment: 'env',
18
+ devConnect: 'dev',
19
+ sessionHistory: 'session',
20
+ thirdPartyLibs: 'libs'
21
+ };
22
+ export function shortLabelForFeature(label, id) {
23
+ const mapped = SHORT_LABEL_MAP[id];
24
+ if (mapped) return mapped;
25
+ const trimmed = label.trim();
26
+ return trimmed.toLowerCase().slice(0, 7);
27
+ }
28
+
29
+ // ─── Rail Component ───────────────────────────────────
30
+
31
+ export function FeatureRail({
32
+ items,
33
+ activeIndex,
34
+ onSelectTab
35
+ }) {
36
+ return /*#__PURE__*/_jsx(View, {
37
+ style: styles.rail,
38
+ children: /*#__PURE__*/_jsx(ScrollView, {
39
+ showsVerticalScrollIndicator: false,
40
+ contentContainerStyle: styles.scrollContent,
41
+ children: items.map((item, index) => {
42
+ const isActive = index === activeIndex;
43
+ const short = shortLabelForFeature(item.label, item.id);
44
+ const dotColor = item.dotColor ?? null;
45
+ const hasCount = item.count != null && item.count > 0;
46
+ return /*#__PURE__*/_jsxs(Pressable, {
47
+ onPress: () => onSelectTab(index),
48
+ style: [styles.item, isActive && styles.activeItem],
49
+ accessibilityRole: "tab",
50
+ accessibilityLabel: item.label,
51
+ accessibilityState: {
52
+ selected: isActive
53
+ },
54
+ children: [isActive && /*#__PURE__*/_jsx(View, {
55
+ style: styles.activeBar
56
+ }), /*#__PURE__*/_jsx(Text, {
57
+ style: [styles.itemName, isActive && styles.activeItemName],
58
+ numberOfLines: 1,
59
+ children: short
60
+ }), /*#__PURE__*/_jsxs(View, {
61
+ style: styles.itemMeta,
62
+ children: [dotColor && /*#__PURE__*/_jsx(View, {
63
+ style: [styles.dot, {
64
+ backgroundColor: dotColor
65
+ }]
66
+ }), hasCount && /*#__PURE__*/_jsx(View, {
67
+ style: styles.countPill,
68
+ children: /*#__PURE__*/_jsx(Text, {
69
+ style: styles.countText,
70
+ children: item.count
71
+ })
72
+ })]
73
+ })]
74
+ }, item.id);
75
+ })
76
+ })
77
+ });
78
+ }
79
+ const RAIL_WIDTH = 80;
80
+ const styles = StyleSheet.create({
81
+ rail: {
82
+ width: RAIL_WIDTH,
83
+ backgroundColor: Colors.railBackground,
84
+ borderRightWidth: StyleSheet.hairlineWidth,
85
+ borderRightColor: Colors.panelDivider
86
+ },
87
+ scrollContent: {
88
+ paddingVertical: 6,
89
+ paddingHorizontal: 6,
90
+ gap: 3
91
+ },
92
+ item: {
93
+ minHeight: 56,
94
+ borderRadius: 8,
95
+ justifyContent: 'center',
96
+ alignItems: 'center',
97
+ paddingVertical: 8,
98
+ paddingHorizontal: 4,
99
+ position: 'relative',
100
+ overflow: 'hidden'
101
+ },
102
+ activeItem: {
103
+ backgroundColor: Colors.surface,
104
+ elevation: 2,
105
+ shadowColor: '#000',
106
+ shadowOffset: {
107
+ width: 0,
108
+ height: 2
109
+ },
110
+ shadowOpacity: 0.06,
111
+ shadowRadius: 4
112
+ },
113
+ activeBar: {
114
+ position: 'absolute',
115
+ left: 0,
116
+ top: 10,
117
+ bottom: 10,
118
+ width: 3,
119
+ borderRadius: 1.5,
120
+ backgroundColor: Colors.primary
121
+ },
122
+ itemName: {
123
+ fontSize: 9,
124
+ fontWeight: '700',
125
+ color: Colors.textSecondary,
126
+ letterSpacing: 0
127
+ },
128
+ activeItemName: {
129
+ color: Colors.text,
130
+ fontWeight: '800'
131
+ },
132
+ itemMeta: {
133
+ marginTop: 4,
134
+ flexDirection: 'row',
135
+ alignItems: 'center',
136
+ gap: 3
137
+ },
138
+ dot: {
139
+ width: 6,
140
+ height: 6,
141
+ borderRadius: 3
142
+ },
143
+ countPill: {
144
+ minWidth: 18,
145
+ height: 14,
146
+ borderRadius: 7,
147
+ backgroundColor: Colors.background,
148
+ paddingHorizontal: 4,
149
+ alignItems: 'center',
150
+ justifyContent: 'center'
151
+ },
152
+ countText: {
153
+ fontSize: 8,
154
+ fontWeight: '800',
155
+ color: Colors.textSecondary
156
+ }
157
+ });
158
+ //# sourceMappingURL=FeatureRail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Text","StyleSheet","ScrollView","Pressable","Colors","jsx","_jsx","jsxs","_jsxs","SHORT_LABEL_MAP","network","console","native","navigation","zustand","track","clipboard","environment","devConnect","sessionHistory","thirdPartyLibs","shortLabelForFeature","label","id","mapped","trimmed","trim","toLowerCase","slice","FeatureRail","items","activeIndex","onSelectTab","style","styles","rail","children","showsVerticalScrollIndicator","contentContainerStyle","scrollContent","map","item","index","isActive","short","dotColor","hasCount","count","onPress","activeItem","accessibilityRole","accessibilityLabel","accessibilityState","selected","activeBar","itemName","activeItemName","numberOfLines","itemMeta","dot","backgroundColor","countPill","countText","RAIL_WIDTH","create","width","railBackground","borderRightWidth","hairlineWidth","borderRightColor","panelDivider","paddingVertical","paddingHorizontal","gap","minHeight","borderRadius","justifyContent","alignItems","position","overflow","surface","elevation","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","left","top","bottom","primary","fontSize","fontWeight","color","textSecondary","letterSpacing","text","marginTop","flexDirection","minWidth","background"],"sourceRoot":"../../../../src","sources":["ui/panel/FeatureRail.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { Component, useCallback, useEffect, useRef, useState } from 'react';
4
- import { View, Text, StyleSheet, Animated } from 'react-native';
4
+ import { View, Text, TextInput, StyleSheet, Animated } from 'react-native';
5
+ import { Colors } from '../theme/colors';
5
6
  import { getPreference, setPreference, KEYS } from '../../utils/debugPreferences';
6
7
  import { FloatIcon } from '../floating/FloatIcon';
7
8
  import { DebugPanel } from './DebugPanel';
8
- import { FeatureTabBar } from './FeatureTabBar';
9
+ import { FeatureRail } from './FeatureRail';
10
+ import { FeatureIntroCard } from './FeatureIntroCard';
11
+ import { buildFeatureSummary } from './buildFeatureSummary';
12
+ import { filterFeatureSnapshot } from './filterFeatureSnapshot';
9
13
  import { resolveStoredTabIndex } from './tabPersistence';
10
14
  import { useTabAnimation } from './useTabAnimation';
11
15
 
@@ -29,6 +33,50 @@ class DebugErrorBoundary extends Component {
29
33
  return this.props.children;
30
34
  }
31
35
  }
36
+
37
+ // ─── Snapshot helpers ──────────────────────────────────
38
+
39
+ function snapshotCount(feature) {
40
+ try {
41
+ const snap = feature.getSnapshot();
42
+ if (Array.isArray(snap)) return snap.length;
43
+ if (snap && typeof snap === 'object') {
44
+ const obj = snap;
45
+ if (Array.isArray(obj.items)) return obj.items.length;
46
+ if (Array.isArray(obj.logs)) return obj.logs.length;
47
+ if (Array.isArray(obj.entries)) return obj.entries.length;
48
+ if (Array.isArray(obj.environments)) return obj.environments.length;
49
+ }
50
+ } catch {/* ignore */}
51
+ return undefined;
52
+ }
53
+ function buildPanelConnectionStatus(features) {
54
+ const devConnect = features.find(f => f.name === 'devConnect');
55
+ if (!devConnect) {
56
+ return {
57
+ label: 'offline desktop sync unavailable',
58
+ color: Colors.textLight
59
+ };
60
+ }
61
+ try {
62
+ const snap = devConnect.getSnapshot() ?? {};
63
+ const host = snap.isSimulator ? 'localhost' : snap.computerHost?.trim();
64
+ const port = snap.daemonPort?.trim();
65
+ const target = host && port ? `${host}:${port}` : host || (port ? `port ${port}` : 'not configured');
66
+ return {
67
+ label: `${snap.streaming ? 'live' : 'offline'} ${target}`,
68
+ color: snap.streaming ? Colors.success : Colors.textLight
69
+ };
70
+ } catch {
71
+ return {
72
+ label: 'offline desktop sync unavailable',
73
+ color: Colors.textLight
74
+ };
75
+ }
76
+ }
77
+
78
+ // ─── Main Component ────────────────────────────────────
79
+
32
80
  export function FloatPanelView({
33
81
  features,
34
82
  panelOpen,
@@ -37,6 +85,8 @@ export function FloatPanelView({
37
85
  onClearAll
38
86
  }) {
39
87
  const [activeTab, setActiveTab] = useState(0);
88
+ const [searchQuery, setSearchQuery] = useState('');
89
+ const [filterBad, setFilterBad] = useState(false);
40
90
  const tabLoaded = useRef(false);
41
91
 
42
92
  // Restore last tab on mount
@@ -67,6 +117,8 @@ export function FloatPanelView({
67
117
  tabCount: features.length,
68
118
  onTabChange: useCallback(index => {
69
119
  tabLoaded.current = true;
120
+ setSearchQuery('');
121
+ setFilterBad(false);
70
122
  setActiveTab(index);
71
123
  const featureName = features[index]?.name;
72
124
  if (featureName) {
@@ -105,10 +157,31 @@ export function FloatPanelView({
105
157
 
106
158
  // Badge (first feature that returns one)
107
159
  const envBadge = features.map(f => f.badge?.()).find(b => b != null) ?? null;
108
- const tabs = features.map(f => ({
109
- label: f.label,
110
- id: f.name
111
- }));
160
+
161
+ // Rail items with counts
162
+ const railItems = features.map(f => {
163
+ const b = f.badge?.();
164
+ return {
165
+ id: f.name,
166
+ label: f.label,
167
+ dotColor: b?.color ?? null,
168
+ count: snapshotCount(f)
169
+ };
170
+ });
171
+ const panelConnectionStatus = buildPanelConnectionStatus(features);
172
+ const handleClearAll = useCallback(() => {
173
+ setSearchQuery('');
174
+ setFilterBad(false);
175
+ onClearAll();
176
+ }, [onClearAll]);
177
+
178
+ // Active feature + summary
179
+ const activeFeature = features[activeTab];
180
+ const activeSnapshot = activeFeature?.getSnapshot();
181
+ const activeSummary = activeFeature ? buildFeatureSummary(activeFeature, activeSnapshot) : null;
182
+
183
+ // Filtered snapshot — reuse activeSnapshot to avoid double getSnapshot()
184
+ const filteredSnapshot = activeFeature ? filterFeatureSnapshot(activeFeature, activeSnapshot, searchQuery, filterBad ? 'bad' : 'all') : null;
112
185
 
113
186
  // Render active feature content
114
187
  const renderFeatureContent = () => {
@@ -123,7 +196,7 @@ export function FloatPanelView({
123
196
  style: styles.emptyText,
124
197
  children: "Feature not found"
125
198
  });
126
- const snapshot = feature.getSnapshot();
199
+ const snapshot = filteredSnapshot;
127
200
  const TabComponent = feature.renderContent;
128
201
  if (TabComponent) return /*#__PURE__*/_jsx(TabComponent, {
129
202
  snapshot: snapshot,
@@ -137,6 +210,7 @@ export function FloatPanelView({
137
210
  })
138
211
  });
139
212
  };
213
+ const showSearch = activeSummary ? activeSummary.count != null && activeSummary.count > 0 : false;
140
214
  return /*#__PURE__*/_jsx(DebugErrorBoundary, {
141
215
  onError: onClosePanel,
142
216
  children: /*#__PURE__*/_jsxs(View, {
@@ -146,23 +220,46 @@ export function FloatPanelView({
146
220
  visible: !panelOpen,
147
221
  onPress: onOpenPanel,
148
222
  badge: envBadge
149
- }), panelOpen && /*#__PURE__*/_jsxs(DebugPanel, {
223
+ }), panelOpen && /*#__PURE__*/_jsx(DebugPanel, {
150
224
  onClose: onClosePanel,
151
- onClearAll: onClearAll,
152
- children: [/*#__PURE__*/_jsx(FeatureTabBar, {
153
- tabs: tabs,
154
- activeIndex: activeTab,
155
- onSelectTab: switchTab
156
- }), /*#__PURE__*/_jsx(Animated.View, {
157
- style: [styles.contentContainer, {
158
- opacity: contentOpacity,
159
- transform: [{
160
- translateX: contentTranslateX
161
- }]
162
- }],
163
- ...panHandlers,
164
- children: renderFeatureContent()
165
- })]
225
+ onClearAll: handleClearAll,
226
+ syncLabel: panelConnectionStatus.label,
227
+ syncColor: panelConnectionStatus.color,
228
+ children: /*#__PURE__*/_jsxs(View, {
229
+ style: styles.bodyRow,
230
+ children: [/*#__PURE__*/_jsx(FeatureRail, {
231
+ items: railItems,
232
+ activeIndex: activeTab,
233
+ onSelectTab: switchTab
234
+ }), /*#__PURE__*/_jsxs(View, {
235
+ style: styles.contentColumn,
236
+ children: [activeFeature && activeSummary && /*#__PURE__*/_jsx(FeatureIntroCard, {
237
+ title: activeFeature.label,
238
+ summary: activeSummary,
239
+ filterBad: filterBad,
240
+ onFilterBad: setFilterBad
241
+ }), showSearch && /*#__PURE__*/_jsx(View, {
242
+ style: styles.toolbar,
243
+ children: /*#__PURE__*/_jsx(TextInput, {
244
+ style: styles.searchInput,
245
+ placeholder: "Search...",
246
+ placeholderTextColor: Colors.textLight,
247
+ value: searchQuery,
248
+ onChangeText: setSearchQuery,
249
+ returnKeyType: "search"
250
+ })
251
+ }), /*#__PURE__*/_jsx(Animated.View, {
252
+ style: [styles.contentContainer, {
253
+ opacity: contentOpacity,
254
+ transform: [{
255
+ translateX: contentTranslateX
256
+ }]
257
+ }],
258
+ ...panHandlers,
259
+ children: renderFeatureContent()
260
+ })]
261
+ })]
262
+ })
166
263
  })]
167
264
  })
168
265
  });
@@ -176,6 +273,34 @@ const styles = StyleSheet.create({
176
273
  bottom: 0,
177
274
  zIndex: 999
178
275
  },
276
+ bodyRow: {
277
+ flex: 1,
278
+ flexDirection: 'row'
279
+ },
280
+ contentColumn: {
281
+ flex: 1
282
+ },
283
+ toolbar: {
284
+ flexDirection: 'row',
285
+ alignItems: 'center',
286
+ gap: 8,
287
+ paddingHorizontal: 10,
288
+ paddingVertical: 8,
289
+ borderBottomWidth: StyleSheet.hairlineWidth,
290
+ borderBottomColor: Colors.border,
291
+ backgroundColor: Colors.background
292
+ },
293
+ searchInput: {
294
+ flex: 1,
295
+ height: 34,
296
+ borderWidth: 1,
297
+ borderColor: Colors.border,
298
+ borderRadius: 8,
299
+ backgroundColor: Colors.surface,
300
+ paddingHorizontal: 10,
301
+ fontSize: 13,
302
+ color: Colors.text
303
+ },
179
304
  contentContainer: {
180
305
  flex: 1
181
306
  },
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","useCallback","useEffect","useRef","useState","View","Text","StyleSheet","Animated","getPreference","setPreference","KEYS","FloatIcon","DebugPanel","FeatureTabBar","resolveStoredTabIndex","useTabAnimation","jsx","_jsx","jsxs","_jsxs","DebugErrorBoundary","state","hasError","getDerivedStateFromError","componentDidCatch","error","info","console","componentStack","props","onError","render","children","FloatPanelView","features","panelOpen","onOpenPanel","onClosePanel","onClearAll","activeTab","setActiveTab","tabLoaded","current","length","mounted","lastTab","then","val","idx","featureName","name","contentOpacity","contentTranslateX","panHandlers","switchTab","tabCount","onTabChange","index","setTick","refreshQueued","scheduleRefresh","requestAnimationFrame","t","unsubs","map","f","subscribe","filter","u","forEach","envBadge","badge","find","b","tabs","label","id","renderFeatureContent","style","styles","emptyText","feature","snapshot","getSnapshot","TabComponent","renderContent","genericContent","jsonContent","JSON","stringify","container","pointerEvents","visible","onPress","onClose","activeIndex","onSelectTab","contentContainer","opacity","transform","translateX","create","position","top","left","right","bottom","zIndex","flex","padding","textAlign","color","fontSize","fontFamily"],"sourceRoot":"../../../../src","sources":["ui/panel/FloatPanelView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","useCallback","useEffect","useRef","useState","View","Text","TextInput","StyleSheet","Animated","Colors","getPreference","setPreference","KEYS","FloatIcon","DebugPanel","FeatureRail","FeatureIntroCard","buildFeatureSummary","filterFeatureSnapshot","resolveStoredTabIndex","useTabAnimation","jsx","_jsx","jsxs","_jsxs","DebugErrorBoundary","state","hasError","getDerivedStateFromError","componentDidCatch","error","info","console","componentStack","props","onError","render","children","snapshotCount","feature","snap","getSnapshot","Array","isArray","length","obj","items","logs","entries","environments","undefined","buildPanelConnectionStatus","features","devConnect","find","f","name","label","color","textLight","host","isSimulator","computerHost","trim","port","daemonPort","target","streaming","success","FloatPanelView","panelOpen","onOpenPanel","onClosePanel","onClearAll","activeTab","setActiveTab","searchQuery","setSearchQuery","filterBad","setFilterBad","tabLoaded","current","mounted","lastTab","then","val","idx","featureName","contentOpacity","contentTranslateX","panHandlers","switchTab","tabCount","onTabChange","index","setTick","refreshQueued","scheduleRefresh","requestAnimationFrame","t","unsubs","map","subscribe","filter","u","forEach","envBadge","badge","b","railItems","id","dotColor","count","panelConnectionStatus","handleClearAll","activeFeature","activeSnapshot","activeSummary","filteredSnapshot","renderFeatureContent","style","styles","emptyText","snapshot","TabComponent","renderContent","genericContent","jsonContent","JSON","stringify","showSearch","container","pointerEvents","visible","onPress","onClose","syncLabel","syncColor","bodyRow","activeIndex","onSelectTab","contentColumn","title","summary","onFilterBad","toolbar","searchInput","placeholder","placeholderTextColor","value","onChangeText","returnKeyType","contentContainer","opacity","transform","translateX","create","position","top","left","right","bottom","zIndex","flex","flexDirection","alignItems","gap","paddingHorizontal","paddingVertical","borderBottomWidth","hairlineWidth","borderBottomColor","border","backgroundColor","background","height","borderWidth","borderColor","borderRadius","surface","fontSize","text","padding","textAlign","fontFamily"],"sourceRoot":"../../../../src","sources":["ui/panel/FloatPanelView.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+
3
+ export function buildFeatureSummary(feature, snapshot) {
4
+ const name = feature.name;
5
+ if (name === 'network') return buildNetworkSummary(snapshot);
6
+ if (name === 'console') return buildConsoleSummary(snapshot);
7
+ if (name === 'navigation') return buildNavigationSummary(snapshot);
8
+ if (name === 'zustand') return buildZustandSummary(snapshot);
9
+ if (name === 'track') return buildTrackSummary(snapshot);
10
+ if (name === 'clipboard') return buildClipboardSummary(snapshot);
11
+ if (name === 'environment') return buildEnvironmentSummary(snapshot);
12
+ if (name === 'devConnect') return buildDevConnectSummary(snapshot);
13
+ if (name === 'sessionHistory') return buildSessionHistorySummary(snapshot);
14
+ if (name === 'thirdPartyLibs') return buildThirdPartyLibsSummary(snapshot);
15
+ if (name === 'native') return buildNativeSummary(snapshot);
16
+ return buildUnknownSummary(snapshot);
17
+ }
18
+
19
+ // ─── Per-feature builders ──────────────────────────────
20
+
21
+ function buildNetworkSummary(snapshot) {
22
+ const items = asArray(snapshot);
23
+ const count = items.length;
24
+ let badCount = 0;
25
+ let latestLabel;
26
+ if (count > 0) {
27
+ for (const item of items) {
28
+ const n = item;
29
+ if (n.error || (n.response?.status ?? 0) >= 400) badCount++;
30
+ }
31
+ const last = items[items.length - 1];
32
+ const method = last.request?.method?.toUpperCase() ?? '';
33
+ const url = last.request?.url ?? '';
34
+ const status = last.response?.status;
35
+ const path = extractPath(url);
36
+ latestLabel = [method, path, status].filter(Boolean).join(' ');
37
+ }
38
+ return {
39
+ capabilityText: 'HTTP capture, status, duration, request and response body',
40
+ count,
41
+ badCount: badCount > 0 ? badCount : undefined,
42
+ latestLabel,
43
+ supportsBadFilter: count > 0
44
+ };
45
+ }
46
+ function buildConsoleSummary(snapshot) {
47
+ const items = asArray(snapshot);
48
+ const count = items.length;
49
+ let badCount = 0;
50
+ let latestLabel;
51
+ if (count > 0) {
52
+ for (const item of items) {
53
+ const lvl = item.level ?? '';
54
+ if (lvl === 'warn' || lvl === 'error' || lvl === 'fatal') badCount++;
55
+ }
56
+ const last = items[items.length - 1];
57
+ latestLabel = formatConsoleMessage(last.data);
58
+ }
59
+ return {
60
+ capabilityText: 'Console log capture with level filtering',
61
+ count,
62
+ badCount: badCount > 0 ? badCount : undefined,
63
+ latestLabel,
64
+ supportsBadFilter: count > 0
65
+ };
66
+ }
67
+ function buildNavigationSummary(snapshot) {
68
+ const items = asArray(snapshot);
69
+ const count = items.length;
70
+ let latestLabel;
71
+ if (count > 0) {
72
+ const last = items[items.length - 1];
73
+ const from = last.from ?? '?';
74
+ const to = last.to ?? '?';
75
+ latestLabel = `${from} → ${to}`;
76
+ }
77
+ return {
78
+ capabilityText: 'Screen navigation tracking with route history',
79
+ count,
80
+ latestLabel,
81
+ supportsBadFilter: false
82
+ };
83
+ }
84
+ function buildZustandSummary(snapshot) {
85
+ const items = asArray(snapshot);
86
+ const count = items.length;
87
+ let latestLabel;
88
+ if (count > 0) {
89
+ const last = items[items.length - 1];
90
+ const parts = [last.action, last.storeName].filter(Boolean);
91
+ latestLabel = parts.join(' @ ') || undefined;
92
+ }
93
+ return {
94
+ capabilityText: 'State change tracking for Zustand stores',
95
+ count,
96
+ latestLabel,
97
+ supportsBadFilter: false
98
+ };
99
+ }
100
+ function buildTrackSummary(snapshot) {
101
+ const items = asArray(snapshot);
102
+ const count = items.length;
103
+ let latestLabel;
104
+ if (count > 0) {
105
+ const last = items[items.length - 1];
106
+ latestLabel = last.eventName;
107
+ }
108
+ return {
109
+ capabilityText: 'Analytics event tracking and inspection',
110
+ count,
111
+ latestLabel,
112
+ supportsBadFilter: false
113
+ };
114
+ }
115
+ function buildClipboardSummary(_snapshot) {
116
+ return {
117
+ capabilityText: 'Clipboard event monitoring',
118
+ supportsBadFilter: false
119
+ };
120
+ }
121
+ function buildEnvironmentSummary(snapshot) {
122
+ const env = snapshot ?? {};
123
+ const envs = env.environments ?? [];
124
+ const current = envs.find(e => e.id === env.currentEnvironmentId);
125
+ return {
126
+ capabilityText: 'Environment configuration and switching',
127
+ count: envs.length || undefined,
128
+ latestLabel: current?.label,
129
+ statusLabel: current?.label,
130
+ supportsBadFilter: false
131
+ };
132
+ }
133
+ function buildDevConnectSummary(snapshot) {
134
+ const s = snapshot ?? {};
135
+ const host = [s.computerHost, s.daemonPort].filter(Boolean).join(':');
136
+ return {
137
+ capabilityText: 'Desktop sync with daemon connection',
138
+ statusLabel: host ? `${s.streaming ? 'live' : 'offline'} ${host}` : s.streaming ? 'live' : undefined,
139
+ statusColor: s.streaming ? '#34C759' : undefined,
140
+ supportsBadFilter: false
141
+ };
142
+ }
143
+ function buildSessionHistorySummary(snapshot) {
144
+ const s = snapshot ?? {};
145
+ const count = s.sessions?.length;
146
+ return {
147
+ capabilityText: 'Session log recording and replay',
148
+ count: count || undefined,
149
+ latestLabel: s.currentSessionId,
150
+ supportsBadFilter: false
151
+ };
152
+ }
153
+ function buildThirdPartyLibsSummary(snapshot) {
154
+ const items = asArray(snapshot);
155
+ return {
156
+ capabilityText: 'Third-party library inspection and management',
157
+ count: items.length || undefined,
158
+ supportsBadFilter: false
159
+ };
160
+ }
161
+ function buildNativeSummary(snapshot) {
162
+ const items = asArray(snapshot);
163
+ let badCount = 0;
164
+ for (const item of items) {
165
+ const lvl = item.level ?? '';
166
+ if (lvl === 'warn' || lvl === 'error' || lvl === 'fatal') badCount++;
167
+ }
168
+ return {
169
+ capabilityText: 'Native log capture',
170
+ count: items.length || undefined,
171
+ badCount: badCount > 0 ? badCount : undefined,
172
+ supportsBadFilter: items.length > 0
173
+ };
174
+ }
175
+ function buildUnknownSummary(snapshot) {
176
+ const items = asArray(snapshot);
177
+ return {
178
+ capabilityText: `${items.length} item${items.length !== 1 ? 's' : ''} captured`,
179
+ count: items.length || undefined,
180
+ supportsBadFilter: false
181
+ };
182
+ }
183
+
184
+ // ─── Helpers ───────────────────────────────────────────
185
+
186
+ function asArray(snap) {
187
+ if (Array.isArray(snap)) return snap;
188
+ return [];
189
+ }
190
+ function extractPath(url) {
191
+ try {
192
+ const u = new URL(url);
193
+ return u.pathname + u.search;
194
+ } catch {
195
+ return url;
196
+ }
197
+ }
198
+ function formatConsoleMessage(data) {
199
+ if (!data || data.length === 0) return undefined;
200
+ const joined = data.map(d => typeof d === 'string' ? d : JSON.stringify(d)).join(' ').slice(0, 60);
201
+ return joined || undefined;
202
+ }
203
+ //# sourceMappingURL=buildFeatureSummary.js.map