@mseep/anything-analyzer 3.6.50

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 (172) hide show
  1. package/.codeartsdoer/.codebaseignore +0 -0
  2. package/.codeartsdoer/AGENTS.md +12 -0
  3. package/.github/workflows/build.yml +146 -0
  4. package/README.en.md +264 -0
  5. package/README.md +276 -0
  6. package/RELEASE_NOTES.md +16 -0
  7. package/USAGE.md +490 -0
  8. package/color-preview-r3.html +414 -0
  9. package/color-preview.html +414 -0
  10. package/dev-app-update.yml +3 -0
  11. package/electron-builder.yml +36 -0
  12. package/electron.vite.config.ts +40 -0
  13. package/package.json +53 -0
  14. package/report-2026-04-13-copilot-claude-sonnet-4.6.md +955 -0
  15. package/resources/doloffer-logo.png +0 -0
  16. package/resources/entitlements.mac.plist +12 -0
  17. package/resources/icon.ico +0 -0
  18. package/resources/icon.png +0 -0
  19. package/src/main/ai/ai-analyzer.ts +517 -0
  20. package/src/main/ai/crypto-script-extractor.ts +206 -0
  21. package/src/main/ai/data-assembler.ts +205 -0
  22. package/src/main/ai/llm-router.ts +1120 -0
  23. package/src/main/ai/prompt-builder.ts +349 -0
  24. package/src/main/ai/scene-detector.ts +302 -0
  25. package/src/main/capture/capture-engine.ts +130 -0
  26. package/src/main/capture/interaction-recorder.ts +171 -0
  27. package/src/main/capture/js-injector.ts +57 -0
  28. package/src/main/capture/replay-engine.ts +256 -0
  29. package/src/main/capture/storage-collector.ts +76 -0
  30. package/src/main/cdp/cdp-manager.ts +233 -0
  31. package/src/main/db/database.ts +41 -0
  32. package/src/main/db/migrations.ts +235 -0
  33. package/src/main/db/repositories.ts +574 -0
  34. package/src/main/fingerprint/http-spoofing.ts +48 -0
  35. package/src/main/fingerprint/presets.ts +173 -0
  36. package/src/main/fingerprint/profile-generator.ts +115 -0
  37. package/src/main/fingerprint/profile-store.ts +52 -0
  38. package/src/main/index.ts +260 -0
  39. package/src/main/ipc.ts +856 -0
  40. package/src/main/logger.ts +42 -0
  41. package/src/main/mcp/mcp-config.ts +66 -0
  42. package/src/main/mcp/mcp-manager.ts +155 -0
  43. package/src/main/mcp/mcp-server.ts +1038 -0
  44. package/src/main/prompt-templates.ts +170 -0
  45. package/src/main/proxy/ca-manager.ts +204 -0
  46. package/src/main/proxy/cert-download-page.ts +171 -0
  47. package/src/main/proxy/cert-installer.ts +242 -0
  48. package/src/main/proxy/mitm-proxy-config.ts +37 -0
  49. package/src/main/proxy/mitm-proxy-server.ts +1085 -0
  50. package/src/main/proxy/system-proxy.ts +248 -0
  51. package/src/main/session/session-manager.ts +724 -0
  52. package/src/main/tab-manager.ts +582 -0
  53. package/src/main/updater.ts +111 -0
  54. package/src/main/window.ts +235 -0
  55. package/src/preload/hook-script.ts +270 -0
  56. package/src/preload/index.ts +211 -0
  57. package/src/preload/interaction-hook.ts +286 -0
  58. package/src/preload/stealth-script.ts +302 -0
  59. package/src/preload/target-preload.ts +15 -0
  60. package/src/renderer/App.tsx +656 -0
  61. package/src/renderer/components/AiLogDetail.tsx +173 -0
  62. package/src/renderer/components/AiLogList.tsx +101 -0
  63. package/src/renderer/components/AiLogView.module.css +364 -0
  64. package/src/renderer/components/AiLogView.tsx +86 -0
  65. package/src/renderer/components/AnalyzeBar.module.css +79 -0
  66. package/src/renderer/components/AnalyzeBar.tsx +104 -0
  67. package/src/renderer/components/BrowserPanel.module.css +67 -0
  68. package/src/renderer/components/BrowserPanel.tsx +90 -0
  69. package/src/renderer/components/ControlBar.module.css +47 -0
  70. package/src/renderer/components/ControlBar.tsx +205 -0
  71. package/src/renderer/components/HookLog.tsx +132 -0
  72. package/src/renderer/components/InteractionLog.tsx +183 -0
  73. package/src/renderer/components/MCPServerModal.tsx +427 -0
  74. package/src/renderer/components/PromptTemplateModal.tsx +254 -0
  75. package/src/renderer/components/ReportView.module.css +413 -0
  76. package/src/renderer/components/ReportView.tsx +429 -0
  77. package/src/renderer/components/RequestDetail.module.css +191 -0
  78. package/src/renderer/components/RequestDetail.tsx +202 -0
  79. package/src/renderer/components/RequestLog.module.css +69 -0
  80. package/src/renderer/components/RequestLog.tsx +208 -0
  81. package/src/renderer/components/SessionList.module.css +245 -0
  82. package/src/renderer/components/SessionList.tsx +247 -0
  83. package/src/renderer/components/SettingsModal.tsx +100 -0
  84. package/src/renderer/components/StatusBar.module.css +44 -0
  85. package/src/renderer/components/StatusBar.tsx +102 -0
  86. package/src/renderer/components/StorageView.module.css +41 -0
  87. package/src/renderer/components/StorageView.tsx +178 -0
  88. package/src/renderer/components/TabBar.module.css +88 -0
  89. package/src/renderer/components/TabBar.tsx +70 -0
  90. package/src/renderer/components/Titlebar.module.css +254 -0
  91. package/src/renderer/components/Titlebar.tsx +169 -0
  92. package/src/renderer/components/settings/FingerprintSection.tsx +198 -0
  93. package/src/renderer/components/settings/GeneralSection.tsx +164 -0
  94. package/src/renderer/components/settings/LLMSection.tsx +148 -0
  95. package/src/renderer/components/settings/MCPServerSection.tsx +136 -0
  96. package/src/renderer/components/settings/MitmProxySection.tsx +320 -0
  97. package/src/renderer/components/settings/ProxySection.tsx +110 -0
  98. package/src/renderer/css-modules.d.ts +4 -0
  99. package/src/renderer/hooks/useCapture.ts +383 -0
  100. package/src/renderer/hooks/useConfirm.tsx +91 -0
  101. package/src/renderer/hooks/useSession.ts +136 -0
  102. package/src/renderer/hooks/useTabs.ts +103 -0
  103. package/src/renderer/i18n/en.ts +167 -0
  104. package/src/renderer/i18n/index.ts +47 -0
  105. package/src/renderer/i18n/zh.ts +170 -0
  106. package/src/renderer/index.html +12 -0
  107. package/src/renderer/main.tsx +15 -0
  108. package/src/renderer/styles/global.css +144 -0
  109. package/src/renderer/styles/themes/ayu-dark.css +59 -0
  110. package/src/renderer/styles/themes/catppuccin.css +59 -0
  111. package/src/renderer/styles/themes/discord.css +59 -0
  112. package/src/renderer/styles/themes/dracula.css +59 -0
  113. package/src/renderer/styles/themes/github-dark.css +59 -0
  114. package/src/renderer/styles/themes/gruvbox.css +59 -0
  115. package/src/renderer/styles/themes/index.css +11 -0
  116. package/src/renderer/styles/themes/light.css +59 -0
  117. package/src/renderer/styles/themes/nord.css +59 -0
  118. package/src/renderer/styles/themes/one-dark.css +59 -0
  119. package/src/renderer/styles/themes/tokyo-night.css +59 -0
  120. package/src/renderer/styles/tokens.css +137 -0
  121. package/src/renderer/theme.ts +31 -0
  122. package/src/renderer/ui/Badge.module.css +38 -0
  123. package/src/renderer/ui/Badge.tsx +36 -0
  124. package/src/renderer/ui/Button.module.css +142 -0
  125. package/src/renderer/ui/Button.tsx +46 -0
  126. package/src/renderer/ui/Collapse.module.css +49 -0
  127. package/src/renderer/ui/Collapse.tsx +57 -0
  128. package/src/renderer/ui/CopyableBlock.module.css +56 -0
  129. package/src/renderer/ui/CopyableBlock.tsx +42 -0
  130. package/src/renderer/ui/Empty.module.css +19 -0
  131. package/src/renderer/ui/Empty.tsx +34 -0
  132. package/src/renderer/ui/Icons.tsx +346 -0
  133. package/src/renderer/ui/Input.module.css +103 -0
  134. package/src/renderer/ui/Input.tsx +94 -0
  135. package/src/renderer/ui/InputNumber.module.css +68 -0
  136. package/src/renderer/ui/InputNumber.tsx +104 -0
  137. package/src/renderer/ui/Modal.module.css +83 -0
  138. package/src/renderer/ui/Modal.tsx +67 -0
  139. package/src/renderer/ui/Popconfirm.module.css +73 -0
  140. package/src/renderer/ui/Popconfirm.tsx +74 -0
  141. package/src/renderer/ui/Progress.module.css +35 -0
  142. package/src/renderer/ui/Progress.tsx +30 -0
  143. package/src/renderer/ui/Select.module.css +91 -0
  144. package/src/renderer/ui/Select.tsx +100 -0
  145. package/src/renderer/ui/Spinner.module.css +44 -0
  146. package/src/renderer/ui/Spinner.tsx +27 -0
  147. package/src/renderer/ui/Switch.module.css +39 -0
  148. package/src/renderer/ui/Switch.tsx +43 -0
  149. package/src/renderer/ui/Tabs.module.css +76 -0
  150. package/src/renderer/ui/Tabs.tsx +53 -0
  151. package/src/renderer/ui/Tag.module.css +66 -0
  152. package/src/renderer/ui/Tag.tsx +47 -0
  153. package/src/renderer/ui/Timeline.module.css +42 -0
  154. package/src/renderer/ui/Timeline.tsx +29 -0
  155. package/src/renderer/ui/Toast.module.css +99 -0
  156. package/src/renderer/ui/Toast.tsx +90 -0
  157. package/src/renderer/ui/Tooltip.module.css +26 -0
  158. package/src/renderer/ui/Tooltip.tsx +23 -0
  159. package/src/renderer/ui/VirtualTable.module.css +230 -0
  160. package/src/renderer/ui/VirtualTable.tsx +416 -0
  161. package/src/renderer/ui/index.ts +55 -0
  162. package/src/shared/types.ts +695 -0
  163. package/tests/main/ai/crypto-script-extractor.test.ts +281 -0
  164. package/tests/main/ai/llm-router.test.ts +1537 -0
  165. package/tests/main/ai/prompt-builder.test.ts +178 -0
  166. package/tests/main/ai/scene-detector.test.ts +212 -0
  167. package/tests/main/db/migrations.test.ts +134 -0
  168. package/tests/main/release-workflow.test.ts +59 -0
  169. package/tsconfig.json +7 -0
  170. package/tsconfig.node.json +23 -0
  171. package/tsconfig.web.json +24 -0
  172. package/vitest.config.ts +13 -0
@@ -0,0 +1,414 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>配色方案预览 Round 2 — Anything Analyzer</title>
6
+ <style>
7
+ * { margin: 0; padding: 0; box-sizing: border-box; }
8
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; background: #111; color: #fff; padding: 40px; }
9
+ h1 { text-align: center; margin-bottom: 10px; font-size: 28px; }
10
+ .subtitle { text-align: center; color: #888; margin-bottom: 40px; font-size: 14px; }
11
+ .schemes { display: flex; flex-direction: column; gap: 48px; max-width: 1100px; margin: 0 auto; }
12
+ .scheme { border-radius: 16px; overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.5); }
13
+ .scheme-label { padding: 14px 24px; font-size: 18px; font-weight: 700; display: flex; align-items: center; gap: 12px; }
14
+ .scheme-label .tag { font-size: 11px; padding: 3px 10px; border-radius: 20px; font-weight: 500; }
15
+
16
+ .mock { display: flex; height: 420px; }
17
+ .mock-sidebar { width: 220px; display: flex; flex-direction: column; flex-shrink: 0; }
18
+ .mock-main { flex: 1; display: flex; flex-direction: column; }
19
+ .mock-titlebar { height: 44px; display: flex; align-items: center; padding: 0 16px; gap: 16px; font-size: 13px; border-bottom-width: 1px; border-bottom-style: solid; }
20
+ .mock-titlebar .logo { font-weight: 700; letter-spacing: 1px; }
21
+ .mock-titlebar .tabs { display: flex; gap: 4px; }
22
+ .mock-titlebar .tab { padding: 5px 12px; border-radius: 6px; font-size: 12px; cursor: default; }
23
+ .mock-sidebar-header { padding: 14px 16px 8px; font-size: 10px; text-transform: uppercase; letter-spacing: 2px; font-weight: 600; }
24
+ .mock-session { padding: 10px 16px; margin: 2px 10px; border-radius: 8px; cursor: default; }
25
+ .mock-session .name { font-size: 13px; font-weight: 600; }
26
+ .mock-session .meta { font-size: 11px; margin-top: 3px; display: flex; align-items: center; gap: 6px; }
27
+ .mock-session .dot { width: 6px; height: 6px; border-radius: 50%; display: inline-block; }
28
+ .mock-sidebar-spacer { flex: 1; }
29
+ .mock-new-btn { margin: 10px 14px; padding: 8px; border-radius: 8px; text-align: center; font-size: 13px; font-weight: 600; cursor: default; border-width: 1px; border-style: solid; }
30
+ .mock-footer { padding: 8px 16px; font-size: 11px; display: flex; justify-content: space-between; border-top-width: 1px; border-top-style: solid; }
31
+ .mock-browser { padding: 10px 16px; display: flex; align-items: center; gap: 8px; border-bottom-width: 1px; border-bottom-style: solid; }
32
+ .mock-browser .nav { display: flex; gap: 4px; }
33
+ .mock-browser .nav span { width: 28px; height: 28px; border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 14px; }
34
+ .mock-browser .url { flex: 1; padding: 6px 12px; border-radius: 6px; font-size: 12px; border-width: 1px; border-style: solid; }
35
+ .mock-browser .pill { padding: 4px 14px; border-radius: 6px; font-size: 11px; font-weight: 600; }
36
+ .mock-content { flex: 1; display: flex; align-items: center; justify-content: center; font-size: 13px; }
37
+ .mock-statusbar { height: 26px; display: flex; align-items: center; padding: 0 16px; font-size: 11px; gap: 16px; border-top-width: 1px; border-top-style: solid; }
38
+
39
+ /* ========== D. Discord / Spotify 暖灰 ========== */
40
+ .schemeD .scheme-label { background: #1e1f22; color: #f2f3f5; }
41
+ .schemeD .tag { background: rgba(88,101,242,0.2); color: #7289da; }
42
+
43
+ .schemeD .mock-sidebar {
44
+ background: #2b2d31;
45
+ border-right: 1px solid #1e1f22;
46
+ }
47
+ .schemeD .mock-sidebar-header { color: #949ba4; }
48
+ .schemeD .mock-session { color: #dbdee1; }
49
+ .schemeD .mock-session.active {
50
+ background: #35373c;
51
+ border-left: 3px solid #5865f2;
52
+ color: #f2f3f5;
53
+ }
54
+ .schemeD .mock-session .meta { color: #949ba4; }
55
+ .schemeD .mock-session .dot { background: #57f287; box-shadow: 0 0 6px rgba(87,242,135,0.3); }
56
+ .schemeD .mock-session .dot.stopped { background: #747f8d; box-shadow: none; }
57
+ .schemeD .mock-new-btn {
58
+ background: #5865f2;
59
+ border-color: transparent;
60
+ color: #fff;
61
+ }
62
+ .schemeD .mock-footer {
63
+ background: #232428;
64
+ border-top-color: #1e1f22;
65
+ color: #949ba4;
66
+ }
67
+
68
+ .schemeD .mock-titlebar {
69
+ background: #313338;
70
+ border-bottom-color: #1e1f22;
71
+ color: #b5bac1;
72
+ }
73
+ .schemeD .mock-titlebar .logo { color: #f2f3f5; }
74
+ .schemeD .mock-titlebar .tab { color: #949ba4; }
75
+ .schemeD .mock-titlebar .tab.active { background: #404249; color: #f2f3f5; }
76
+
77
+ .schemeD .mock-browser {
78
+ background: #383a40;
79
+ border-bottom-color: #2b2d31;
80
+ }
81
+ .schemeD .mock-browser .nav span { background: rgba(255,255,255,0.06); color: #b5bac1; }
82
+ .schemeD .mock-browser .url { background: #1e1f22; border-color: #1e1f22; color: #b5bac1; }
83
+ .schemeD .mock-browser .pill { background: #57f287; color: #1e1f22; }
84
+
85
+ .schemeD .mock-content { background: #313338; color: #949ba4; }
86
+ .schemeD .mock-statusbar { background: #232428; border-top-color: #1e1f22; color: #949ba4; }
87
+
88
+ /* ========== E. GitHub Dark 高对比 ========== */
89
+ .schemeE .scheme-label { background: #0d1117; color: #e6edf3; }
90
+ .schemeE .tag { background: rgba(56,139,253,0.15); color: #58a6ff; }
91
+
92
+ .schemeE .mock-sidebar {
93
+ background: #161b22;
94
+ border-right: 1px solid #30363d;
95
+ }
96
+ .schemeE .mock-sidebar-header { color: #8b949e; }
97
+ .schemeE .mock-session { color: #c9d1d9; }
98
+ .schemeE .mock-session.active {
99
+ background: rgba(56,139,253,0.1);
100
+ border-left: 3px solid #58a6ff;
101
+ color: #f0f6fc;
102
+ }
103
+ .schemeE .mock-session .meta { color: #8b949e; }
104
+ .schemeE .mock-session .dot { background: #3fb950; box-shadow: 0 0 6px rgba(63,185,80,0.3); }
105
+ .schemeE .mock-session .dot.stopped { background: #484f58; box-shadow: none; }
106
+ .schemeE .mock-new-btn {
107
+ background: rgba(56,139,253,0.1);
108
+ border-color: #30363d;
109
+ color: #58a6ff;
110
+ }
111
+ .schemeE .mock-footer {
112
+ background: #0d1117;
113
+ border-top-color: #21262d;
114
+ color: #8b949e;
115
+ }
116
+
117
+ .schemeE .mock-titlebar {
118
+ background: #0d1117;
119
+ border-bottom-color: #21262d;
120
+ color: #8b949e;
121
+ }
122
+ .schemeE .mock-titlebar .logo { color: #f0f6fc; }
123
+ .schemeE .mock-titlebar .tab { color: #8b949e; }
124
+ .schemeE .mock-titlebar .tab.active { background: #21262d; color: #f0f6fc; }
125
+
126
+ .schemeE .mock-browser {
127
+ background: #161b22;
128
+ border-bottom-color: #21262d;
129
+ }
130
+ .schemeE .mock-browser .nav span { background: #21262d; color: #8b949e; }
131
+ .schemeE .mock-browser .url { background: #0d1117; border-color: #30363d; color: #c9d1d9; }
132
+ .schemeE .mock-browser .pill { background: #238636; color: #fff; }
133
+
134
+ .schemeE .mock-content { background: #0d1117; color: #484f58; }
135
+ .schemeE .mock-statusbar { background: #0d1117; border-top-color: #21262d; color: #8b949e; }
136
+
137
+ /* ========== F. Catppuccin Mocha 奶茶色 ========== */
138
+ .schemeF .scheme-label { background: #1e1e2e; color: #cdd6f4; }
139
+ .schemeF .tag { background: rgba(203,166,247,0.15); color: #cba6f7; }
140
+
141
+ .schemeF .mock-sidebar {
142
+ background: #181825;
143
+ border-right: 1px solid #313244;
144
+ }
145
+ .schemeF .mock-sidebar-header { color: #6c7086; }
146
+ .schemeF .mock-session { color: #cdd6f4; }
147
+ .schemeF .mock-session.active {
148
+ background: #313244;
149
+ border-left: 3px solid #cba6f7;
150
+ color: #cdd6f4;
151
+ }
152
+ .schemeF .mock-session .meta { color: #a6adc8; }
153
+ .schemeF .mock-session .dot { background: #a6e3a1; box-shadow: 0 0 6px rgba(166,227,161,0.3); }
154
+ .schemeF .mock-session .dot.stopped { background: #585b70; box-shadow: none; }
155
+ .schemeF .mock-new-btn {
156
+ background: rgba(137,180,250,0.1);
157
+ border-color: #45475a;
158
+ color: #89b4fa;
159
+ }
160
+ .schemeF .mock-footer {
161
+ background: #11111b;
162
+ border-top-color: #313244;
163
+ color: #6c7086;
164
+ }
165
+
166
+ .schemeF .mock-titlebar {
167
+ background: #1e1e2e;
168
+ border-bottom-color: #313244;
169
+ color: #a6adc8;
170
+ }
171
+ .schemeF .mock-titlebar .logo { color: #cdd6f4; }
172
+ .schemeF .mock-titlebar .tab { color: #6c7086; }
173
+ .schemeF .mock-titlebar .tab.active { background: #313244; color: #cdd6f4; }
174
+
175
+ .schemeF .mock-browser {
176
+ background: #1e1e2e;
177
+ border-bottom-color: #313244;
178
+ }
179
+ .schemeF .mock-browser .nav span { background: #313244; color: #a6adc8; }
180
+ .schemeF .mock-browser .url { background: #11111b; border-color: #313244; color: #bac2de; }
181
+ .schemeF .mock-browser .pill { background: #a6e3a1; color: #1e1e2e; }
182
+
183
+ .schemeF .mock-content { background: #1e1e2e; color: #585b70; }
184
+ .schemeF .mock-statusbar { background: #11111b; border-top-color: #313244; color: #6c7086; }
185
+
186
+ /* ========== G. 亮色清爽 ========== */
187
+ .schemeG .scheme-label { background: #fff; color: #1a1a1a; border-bottom: 1px solid #e5e5e5; }
188
+ .schemeG .tag { background: rgba(59,130,246,0.1); color: #2563eb; }
189
+
190
+ .schemeG .mock-sidebar {
191
+ background: #f8fafc;
192
+ border-right: 1px solid #e2e8f0;
193
+ }
194
+ .schemeG .mock-sidebar-header { color: #94a3b8; }
195
+ .schemeG .mock-session { color: #334155; }
196
+ .schemeG .mock-session.active {
197
+ background: #eff6ff;
198
+ border-left: 3px solid #3b82f6;
199
+ color: #1e293b;
200
+ }
201
+ .schemeG .mock-session .meta { color: #94a3b8; }
202
+ .schemeG .mock-session .dot { background: #22c55e; }
203
+ .schemeG .mock-session .dot.stopped { background: #cbd5e1; }
204
+ .schemeG .mock-new-btn {
205
+ background: #fff;
206
+ border-color: #e2e8f0;
207
+ color: #3b82f6;
208
+ }
209
+ .schemeG .mock-footer {
210
+ background: #f1f5f9;
211
+ border-top-color: #e2e8f0;
212
+ color: #94a3b8;
213
+ }
214
+
215
+ .schemeG .mock-titlebar {
216
+ background: #fff;
217
+ border-bottom-color: #e2e8f0;
218
+ color: #64748b;
219
+ }
220
+ .schemeG .mock-titlebar .logo { color: #0f172a; }
221
+ .schemeG .mock-titlebar .tab { color: #94a3b8; }
222
+ .schemeG .mock-titlebar .tab.active { background: #f1f5f9; color: #0f172a; }
223
+
224
+ .schemeG .mock-browser {
225
+ background: #fff;
226
+ border-bottom-color: #e2e8f0;
227
+ }
228
+ .schemeG .mock-browser .nav span { background: #f1f5f9; color: #64748b; }
229
+ .schemeG .mock-browser .url { background: #f8fafc; border-color: #e2e8f0; color: #334155; }
230
+ .schemeG .mock-browser .pill { background: #22c55e; color: #fff; }
231
+
232
+ .schemeG .mock-content { background: #fff; color: #cbd5e1; }
233
+ .schemeG .mock-statusbar { background: #f8fafc; border-top-color: #e2e8f0; color: #94a3b8; }
234
+
235
+ /* ========== H. Dracula 黑紫 ========== */
236
+ .schemeH .scheme-label { background: #282a36; color: #f8f8f2; }
237
+ .schemeH .tag { background: rgba(189,147,249,0.15); color: #bd93f9; }
238
+
239
+ .schemeH .mock-sidebar {
240
+ background: #21222c;
241
+ border-right: 1px solid #44475a;
242
+ }
243
+ .schemeH .mock-sidebar-header { color: #6272a4; }
244
+ .schemeH .mock-session { color: #f8f8f2; }
245
+ .schemeH .mock-session.active {
246
+ background: #44475a;
247
+ border-left: 3px solid #ff79c6;
248
+ color: #f8f8f2;
249
+ }
250
+ .schemeH .mock-session .meta { color: #6272a4; }
251
+ .schemeH .mock-session .dot { background: #50fa7b; box-shadow: 0 0 8px rgba(80,250,123,0.3); }
252
+ .schemeH .mock-session .dot.stopped { background: #6272a4; box-shadow: none; }
253
+ .schemeH .mock-new-btn {
254
+ background: rgba(255,121,198,0.1);
255
+ border-color: #44475a;
256
+ color: #ff79c6;
257
+ }
258
+ .schemeH .mock-footer {
259
+ background: #191a21;
260
+ border-top-color: #44475a;
261
+ color: #6272a4;
262
+ }
263
+
264
+ .schemeH .mock-titlebar {
265
+ background: #282a36;
266
+ border-bottom-color: #44475a;
267
+ color: #6272a4;
268
+ }
269
+ .schemeH .mock-titlebar .logo { color: #f8f8f2; }
270
+ .schemeH .mock-titlebar .tab { color: #6272a4; }
271
+ .schemeH .mock-titlebar .tab.active { background: #44475a; color: #f8f8f2; }
272
+
273
+ .schemeH .mock-browser {
274
+ background: #282a36;
275
+ border-bottom-color: #44475a;
276
+ }
277
+ .schemeH .mock-browser .nav span { background: #44475a; color: #6272a4; }
278
+ .schemeH .mock-browser .url { background: #21222c; border-color: #44475a; color: #f8f8f2; }
279
+ .schemeH .mock-browser .pill { background: #50fa7b; color: #282a36; }
280
+
281
+ .schemeH .mock-content { background: #282a36; color: #44475a; }
282
+ .schemeH .mock-statusbar { background: #191a21; border-top-color: #44475a; color: #6272a4; }
283
+
284
+ .compare-note { text-align: center; color: #666; font-size: 13px; margin-top: 32px; }
285
+ </style>
286
+ </head>
287
+ <body>
288
+
289
+ <h1>Anything Analyzer 配色方案预览 (Round 2)</h1>
290
+ <p class="subtitle">5 套全新风格,差异更大 — 刷新浏览器查看</p>
291
+
292
+ <div class="schemes">
293
+
294
+ <!-- D -->
295
+ <div class="scheme schemeD">
296
+ <div class="scheme-label">D. Discord / Spotify 暖灰 <span class="tag">高辨识度 · 暖色调</span></div>
297
+ <div class="mock">
298
+ <div class="mock-sidebar">
299
+ <div class="mock-sidebar-header">SESSIONS</div>
300
+ <div class="mock-session active"><div class="name">test</div><div class="meta"><span class="dot stopped"></span> 已停止 · 3 reqs</div></div>
301
+ <div class="mock-session"><div class="name">copilot全面监听</div><div class="meta"><span class="dot"></span> 运行中</div></div>
302
+ <div class="mock-session"><div class="name">openai</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
303
+ <div class="mock-session"><div class="name">Cursor</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
304
+ <div class="mock-sidebar-spacer"></div>
305
+ <div class="mock-new-btn">+ 新建会话</div>
306
+ <div class="mock-footer"><span>⚙ 设置</span><span>v3.2.0</span></div>
307
+ </div>
308
+ <div class="mock-main">
309
+ <div class="mock-titlebar"><span class="logo">Anything Analyzer</span><div class="tabs"><span class="tab active">⊕ 浏览器</span><span class="tab">&lt;&gt; 检查器</span><span class="tab">☆ AI 报告</span></div></div>
310
+ <div class="mock-browser"><div class="nav"><span>←</span><span>→</span><span>↻</span></div><div class="url">https://stats.customs.gov.cn/</div><span class="pill">● 开始</span></div>
311
+ <div class="mock-content">浏览器内容区域</div>
312
+ <div class="mock-statusbar"><span>● 会话 已停止</span><span>请求 3</span><span>Hooks 0</span></div>
313
+ </div>
314
+ </div>
315
+ </div>
316
+
317
+ <!-- E -->
318
+ <div class="scheme schemeE">
319
+ <div class="scheme-label">E. GitHub Dark 高对比 <span class="tag">专业 · 清晰层次</span></div>
320
+ <div class="mock">
321
+ <div class="mock-sidebar">
322
+ <div class="mock-sidebar-header">SESSIONS</div>
323
+ <div class="mock-session active"><div class="name">test</div><div class="meta"><span class="dot stopped"></span> 已停止 · 3 reqs</div></div>
324
+ <div class="mock-session"><div class="name">copilot全面监听</div><div class="meta"><span class="dot"></span> 运行中</div></div>
325
+ <div class="mock-session"><div class="name">openai</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
326
+ <div class="mock-session"><div class="name">Cursor</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
327
+ <div class="mock-sidebar-spacer"></div>
328
+ <div class="mock-new-btn">+ 新建会话</div>
329
+ <div class="mock-footer"><span>⚙ 设置</span><span>v3.2.0</span></div>
330
+ </div>
331
+ <div class="mock-main">
332
+ <div class="mock-titlebar"><span class="logo">Anything Analyzer</span><div class="tabs"><span class="tab active">⊕ 浏览器</span><span class="tab">&lt;&gt; 检查器</span><span class="tab">☆ AI 报告</span></div></div>
333
+ <div class="mock-browser"><div class="nav"><span>←</span><span>→</span><span>↻</span></div><div class="url">https://stats.customs.gov.cn/</div><span class="pill">● 开始</span></div>
334
+ <div class="mock-content">浏览器内容区域</div>
335
+ <div class="mock-statusbar"><span>● 会话 已停止</span><span>请求 3</span><span>Hooks 0</span></div>
336
+ </div>
337
+ </div>
338
+ </div>
339
+
340
+ <!-- F -->
341
+ <div class="scheme schemeF">
342
+ <div class="scheme-label">F. Catppuccin Mocha 奶茶色 <span class="tag">柔和 · 护眼 · 文艺</span></div>
343
+ <div class="mock">
344
+ <div class="mock-sidebar">
345
+ <div class="mock-sidebar-header">SESSIONS</div>
346
+ <div class="mock-session active"><div class="name">test</div><div class="meta"><span class="dot stopped"></span> 已停止 · 3 reqs</div></div>
347
+ <div class="mock-session"><div class="name">copilot全面监听</div><div class="meta"><span class="dot"></span> 运行中</div></div>
348
+ <div class="mock-session"><div class="name">openai</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
349
+ <div class="mock-session"><div class="name">Cursor</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
350
+ <div class="mock-sidebar-spacer"></div>
351
+ <div class="mock-new-btn">+ 新建会话</div>
352
+ <div class="mock-footer"><span>⚙ 设置</span><span>v3.2.0</span></div>
353
+ </div>
354
+ <div class="mock-main">
355
+ <div class="mock-titlebar"><span class="logo">Anything Analyzer</span><div class="tabs"><span class="tab active">⊕ 浏览器</span><span class="tab">&lt;&gt; 检查器</span><span class="tab">☆ AI 报告</span></div></div>
356
+ <div class="mock-browser"><div class="nav"><span>←</span><span>→</span><span>↻</span></div><div class="url">https://stats.customs.gov.cn/</div><span class="pill">● 开始</span></div>
357
+ <div class="mock-content">浏览器内容区域</div>
358
+ <div class="mock-statusbar"><span>● 会话 已停止</span><span>请求 3</span><span>Hooks 0</span></div>
359
+ </div>
360
+ </div>
361
+ </div>
362
+
363
+ <!-- G -->
364
+ <div class="scheme schemeG">
365
+ <div class="scheme-label">G. 亮色清爽 <span class="tag">全亮色 · 干净明快</span></div>
366
+ <div class="mock">
367
+ <div class="mock-sidebar">
368
+ <div class="mock-sidebar-header">SESSIONS</div>
369
+ <div class="mock-session active"><div class="name">test</div><div class="meta"><span class="dot stopped"></span> 已停止 · 3 reqs</div></div>
370
+ <div class="mock-session"><div class="name">copilot全面监听</div><div class="meta"><span class="dot"></span> 运行中</div></div>
371
+ <div class="mock-session"><div class="name">openai</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
372
+ <div class="mock-session"><div class="name">Cursor</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
373
+ <div class="mock-sidebar-spacer"></div>
374
+ <div class="mock-new-btn">+ 新建会话</div>
375
+ <div class="mock-footer"><span>⚙ 设置</span><span>v3.2.0</span></div>
376
+ </div>
377
+ <div class="mock-main">
378
+ <div class="mock-titlebar"><span class="logo">Anything Analyzer</span><div class="tabs"><span class="tab active">⊕ 浏览器</span><span class="tab">&lt;&gt; 检查器</span><span class="tab">☆ AI 报告</span></div></div>
379
+ <div class="mock-browser"><div class="nav"><span>←</span><span>→</span><span>↻</span></div><div class="url">https://stats.customs.gov.cn/</div><span class="pill">● 开始</span></div>
380
+ <div class="mock-content">浏览器内容区域</div>
381
+ <div class="mock-statusbar"><span>● 会话 已停止</span><span>请求 3</span><span>Hooks 0</span></div>
382
+ </div>
383
+ </div>
384
+ </div>
385
+
386
+ <!-- H -->
387
+ <div class="scheme schemeH">
388
+ <div class="scheme-label">H. Dracula 黑紫 <span class="tag">经典 · 鲜艳 · 极客</span></div>
389
+ <div class="mock">
390
+ <div class="mock-sidebar">
391
+ <div class="mock-sidebar-header">SESSIONS</div>
392
+ <div class="mock-session active"><div class="name">test</div><div class="meta"><span class="dot stopped"></span> 已停止 · 3 reqs</div></div>
393
+ <div class="mock-session"><div class="name">copilot全面监听</div><div class="meta"><span class="dot"></span> 运行中</div></div>
394
+ <div class="mock-session"><div class="name">openai</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
395
+ <div class="mock-session"><div class="name">Cursor</div><div class="meta"><span class="dot stopped"></span> 已停止</div></div>
396
+ <div class="mock-sidebar-spacer"></div>
397
+ <div class="mock-new-btn">+ 新建会话</div>
398
+ <div class="mock-footer"><span>⚙ 设置</span><span>v3.2.0</span></div>
399
+ </div>
400
+ <div class="mock-main">
401
+ <div class="mock-titlebar"><span class="logo">Anything Analyzer</span><div class="tabs"><span class="tab active">⊕ 浏览器</span><span class="tab">&lt;&gt; 检查器</span><span class="tab">☆ AI 报告</span></div></div>
402
+ <div class="mock-browser"><div class="nav"><span>←</span><span>→</span><span>↻</span></div><div class="url">https://stats.customs.gov.cn/</div><span class="pill">● 开始</span></div>
403
+ <div class="mock-content">浏览器内容区域</div>
404
+ <div class="mock-statusbar"><span>● 会话 已停止</span><span>请求 3</span><span>Hooks 0</span></div>
405
+ </div>
406
+ </div>
407
+ </div>
408
+
409
+ </div>
410
+
411
+ <p class="compare-note">刷新浏览器查看 · D-H 五套全新方案</p>
412
+
413
+ </body>
414
+ </html>
@@ -0,0 +1,3 @@
1
+ provider: github
2
+ owner: Mouseww
3
+ repo: anything-analyzer
@@ -0,0 +1,36 @@
1
+ appId: com.anything.analyzer
2
+ productName: Anything Analyzer
3
+ directories:
4
+ buildResources: resources
5
+ files:
6
+ - '!**/.vscode/*'
7
+ - '!src/*'
8
+ - '!electron.vite.config.*'
9
+ - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}'
10
+ - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}'
11
+ publish:
12
+ provider: github
13
+ owner: Mouseww
14
+ repo: anything-analyzer
15
+ win:
16
+ target:
17
+ - nsis
18
+ artifactName: "Anything-Analyzer-Setup-${version}.${ext}"
19
+ nsis:
20
+ oneClick: false
21
+ allowToChangeInstallationDirectory: true
22
+ mac:
23
+ category: public.app-category.developer-tools
24
+ hardenedRuntime: true
25
+ gatekeeperAssess: false
26
+ type: distribution
27
+ entitlements: resources/entitlements.mac.plist
28
+ entitlementsInherit: resources/entitlements.mac.plist
29
+ target:
30
+ - dmg
31
+ - zip
32
+ artifactName: "Anything-Analyzer-${version}-${arch}.${ext}"
33
+ linux:
34
+ target:
35
+ - AppImage
36
+ artifactName: "Anything-Analyzer-${version}.${ext}"
@@ -0,0 +1,40 @@
1
+ import { resolve } from 'path'
2
+ import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
3
+ import react from '@vitejs/plugin-react'
4
+
5
+ export default defineConfig({
6
+ main: {
7
+ plugins: [externalizeDepsPlugin()],
8
+ resolve: {
9
+ alias: {
10
+ '@shared': resolve('src/shared')
11
+ }
12
+ }
13
+ },
14
+ preload: {
15
+ plugins: [externalizeDepsPlugin()],
16
+ resolve: {
17
+ alias: {
18
+ '@shared': resolve('src/shared')
19
+ }
20
+ },
21
+ build: {
22
+ rollupOptions: {
23
+ input: {
24
+ index: resolve('src/preload/index.ts'),
25
+ 'hook-script': resolve('src/preload/hook-script.ts'),
26
+ 'interaction-hook': resolve('src/preload/interaction-hook.ts'),
27
+ 'target-preload': resolve('src/preload/target-preload.ts'),
28
+ }
29
+ }
30
+ }
31
+ },
32
+ renderer: {
33
+ resolve: {
34
+ alias: {
35
+ '@shared': resolve('src/shared')
36
+ }
37
+ },
38
+ plugins: [react()]
39
+ }
40
+ })
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@mseep/anything-analyzer",
3
+ "version": "3.6.50",
4
+ "description": "Universal web protocol analyzer with embedded browser and AI-powered analysis",
5
+ "packageManager": "pnpm@10.24.0",
6
+ "main": "./out/main/index.js",
7
+ "scripts": {
8
+ "dev": "electron-vite dev",
9
+ "build": "electron-vite build",
10
+ "preview": "electron-vite preview",
11
+ "test": "vitest run",
12
+ "test:watch": "vitest",
13
+ "lint": "eslint src/ --ext .ts,.tsx",
14
+ "postinstall": "electron-builder install-app-deps"
15
+ },
16
+ "dependencies": {
17
+ "@ant-design/icons": "^5.6.1",
18
+ "@modelcontextprotocol/sdk": "^1.29.0",
19
+ "@vscode/sudo-prompt": "^9.3.2",
20
+ "antd": "^5.24.0",
21
+ "better-sqlite3": "^11.8.1",
22
+ "electron-log": "^5.4.3",
23
+ "electron-updater": "^6.8.3",
24
+ "node-forge": "^1.4.0",
25
+ "react": "^19.0.0",
26
+ "react-dom": "^19.0.0",
27
+ "react-markdown": "^9.0.3",
28
+ "react-window": "^2.2.7",
29
+ "rehype-highlight": "^7.0.2",
30
+ "remark-gfm": "^4.0.0",
31
+ "socks": "^2.8.7",
32
+ "uuid": "^11.1.0",
33
+ "zod": "^4.3.6"
34
+ },
35
+ "devDependencies": {
36
+ "@types/better-sqlite3": "^7.6.12",
37
+ "@types/node-forge": "^1.3.14",
38
+ "@types/react": "^19.0.0",
39
+ "@types/react-dom": "^19.0.0",
40
+ "@types/uuid": "^10.0.0",
41
+ "@vitejs/plugin-react": "^4.3.4",
42
+ "electron": "^35.0.0",
43
+ "electron-builder": "^25.1.8",
44
+ "electron-vite": "^5.0.0",
45
+ "typescript": "^5.7.0",
46
+ "vitest": "^3.0.0"
47
+ },
48
+ "keywords": [
49
+ "mseep",
50
+ "mcp-server"
51
+ ],
52
+ "publisher": "mseep"
53
+ }