@geminilight/mindos 0.6.71 → 0.6.73

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 (227) hide show
  1. package/_standalone/.mindos-build-version +1 -1
  2. package/_standalone/.next/BUILD_ID +1 -1
  3. package/_standalone/.next/app-path-routes-manifest.json +27 -27
  4. package/_standalone/.next/build-manifest.json +3 -3
  5. package/_standalone/.next/cache/.previewinfo +1 -1
  6. package/_standalone/.next/cache/.rscinfo +1 -1
  7. package/_standalone/.next/cache/config.json +3 -3
  8. package/_standalone/.next/prerender-manifest.json +3 -3
  9. package/_standalone/.next/react-loadable-manifest.json +4 -4
  10. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  11. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/_standalone/.next/server/app/_global-error.html +2 -2
  13. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  14. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  16. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  21. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  24. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  25. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  26. package/_standalone/.next/server/app/agents/page.js +1 -1
  27. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  28. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  29. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  31. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
  40. package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
  41. package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  43. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  44. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  45. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  46. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  48. package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
  49. package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
  51. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  52. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  54. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
  55. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  56. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  59. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
  61. package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
  62. package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
  63. package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
  64. package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
  65. package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
  66. package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
  67. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  69. package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
  72. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  74. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  75. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  77. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  79. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  81. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  84. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  87. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  91. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  96. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  97. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  99. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/changelog/page.js +1 -1
  101. package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
  102. package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/changes/page.js +1 -1
  104. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  105. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  106. package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
  107. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  108. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  109. package/_standalone/.next/server/app/echo/page.js +1 -1
  110. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  111. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  112. package/_standalone/.next/server/app/explore/page.js +1 -1
  113. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  114. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  115. package/_standalone/.next/server/app/help/page.js +1 -1
  116. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  117. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  118. package/_standalone/.next/server/app/inbox/history/page.js +1 -1
  119. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
  120. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
  121. package/_standalone/.next/server/app/login/page.js +1 -1
  122. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  123. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  124. package/_standalone/.next/server/app/page.js +1 -1
  125. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  126. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  127. package/_standalone/.next/server/app/setup/page.js +1 -1
  128. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  129. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  130. package/_standalone/.next/server/app/trash/page.js +2 -2
  131. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  132. package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
  133. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  134. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  135. package/_standalone/.next/server/app-paths-manifest.json +27 -27
  136. package/_standalone/.next/server/chunks/{3311.js → 2449.js} +2 -2
  137. package/_standalone/.next/server/chunks/5299.js +1 -1
  138. package/_standalone/.next/server/chunks/6022.js +34 -34
  139. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  140. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  141. package/_standalone/.next/server/pages/500.html +2 -2
  142. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  143. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  144. package/_standalone/.next/static/chunks/{7143.879daa87569c5b02.js → 4094.09364c01df411380.js} +1 -1
  145. package/_standalone/.next/static/chunks/{5795.d9099a1afecd6047.js → 5331.c89084fd7f67887d.js} +2 -2
  146. package/_standalone/.next/static/chunks/app/{layout-a344709b8447be75.js → layout-fcbde5bee626d21a.js} +63 -63
  147. package/_standalone/.next/static/chunks/app/trash/page-e623ff0ab35de002.js +1 -0
  148. package/_standalone/.next/static/chunks/app/view/[...path]/page-49c4eff6ffdb5168.js +12 -0
  149. package/_standalone/.next/static/chunks/{webpack-2f2787d3469d3df1.js → webpack-dc486b68118d1328.js} +1 -1
  150. package/_standalone/.next/trace +72 -72
  151. package/_standalone/package-lock.json +2 -2
  152. package/_standalone/package.json +1 -1
  153. package/app/package.json +1 -1
  154. package/package.json +1 -1
  155. package/_standalone/.next/static/chunks/app/trash/page-0907fdd06a4467de.js +0 -1
  156. package/_standalone/.next/static/chunks/app/view/[...path]/page-f53ce199b4a4bbb5.js +0 -12
  157. package/browser-extension/README.md +0 -160
  158. package/browser-extension/build.mjs +0 -63
  159. package/browser-extension/extension/background/service-worker.js +0 -1
  160. package/browser-extension/extension/content/extractor.js +0 -2
  161. package/browser-extension/extension/icons/icon-128.png +0 -0
  162. package/browser-extension/extension/icons/icon-128.svg +0 -4
  163. package/browser-extension/extension/icons/icon-16.png +0 -0
  164. package/browser-extension/extension/icons/icon-16.svg +0 -4
  165. package/browser-extension/extension/icons/icon-32.png +0 -0
  166. package/browser-extension/extension/icons/icon-32.svg +0 -4
  167. package/browser-extension/extension/icons/icon-48.png +0 -0
  168. package/browser-extension/extension/icons/icon-48.svg +0 -4
  169. package/browser-extension/extension/manifest.json +0 -47
  170. package/browser-extension/extension/popup/popup.css +0 -510
  171. package/browser-extension/extension/popup/popup.html +0 -128
  172. package/browser-extension/extension/popup/popup.js +0 -73
  173. package/browser-extension/package-lock.json +0 -617
  174. package/browser-extension/package.json +0 -21
  175. package/browser-extension/scripts/gen-icons.sh +0 -38
  176. package/browser-extension/src/background/service-worker.ts +0 -27
  177. package/browser-extension/src/content/extractor.ts +0 -44
  178. package/browser-extension/src/icons/icon-128.png +0 -0
  179. package/browser-extension/src/icons/icon-128.svg +0 -4
  180. package/browser-extension/src/icons/icon-16.png +0 -0
  181. package/browser-extension/src/icons/icon-16.svg +0 -4
  182. package/browser-extension/src/icons/icon-32.png +0 -0
  183. package/browser-extension/src/icons/icon-32.svg +0 -4
  184. package/browser-extension/src/icons/icon-48.png +0 -0
  185. package/browser-extension/src/icons/icon-48.svg +0 -4
  186. package/browser-extension/src/lib/api.ts +0 -146
  187. package/browser-extension/src/lib/markdown.ts +0 -68
  188. package/browser-extension/src/lib/storage.ts +0 -37
  189. package/browser-extension/src/lib/types.ts +0 -42
  190. package/browser-extension/src/manifest.json +0 -47
  191. package/browser-extension/src/popup/popup.css +0 -510
  192. package/browser-extension/src/popup/popup.html +0 -128
  193. package/browser-extension/src/popup/popup.ts +0 -416
  194. package/browser-extension/tsconfig.json +0 -16
  195. package/tests/e2e/README.md +0 -25
  196. package/tests/e2e/navigation.spec.ts +0 -14
  197. package/tests/e2e/playwright.config.ts +0 -14
  198. package/tests/integration/README.md +0 -25
  199. package/tests/integration/mcp-contract.test.ts +0 -57
  200. package/tests/integration/mcp-transport.test.ts +0 -361
  201. package/tests/integration/package-lock.json +0 -1463
  202. package/tests/integration/package.json +0 -8
  203. package/tests/integration/vitest.config.ts +0 -11
  204. package/tests/security-hardening.test.ts +0 -456
  205. package/tests/unit/build-integrity.test.ts +0 -137
  206. package/tests/unit/cli-build.test.ts +0 -180
  207. package/tests/unit/cli-config.test.ts +0 -257
  208. package/tests/unit/cli-mcp-install-toml.test.ts +0 -586
  209. package/tests/unit/cli-mcp-install.test.ts +0 -123
  210. package/tests/unit/cli-mcp-stdio-default.test.ts +0 -180
  211. package/tests/unit/cli-modules-load.test.ts +0 -64
  212. package/tests/unit/cli-port.test.ts +0 -87
  213. package/tests/unit/cli-skill-auto-copy.test.ts +0 -260
  214. package/tests/unit/cli-smoke.test.ts +0 -88
  215. package/tests/unit/cli-uninstall.test.ts +0 -218
  216. package/tests/unit/cli-update-root.test.ts +0 -89
  217. package/tests/unit/cli-user-flow-sim.test.ts +0 -506
  218. package/tests/unit/cli-wait-hint.test.ts +0 -86
  219. package/tests/unit/custom-agents.test.ts +0 -478
  220. package/tests/unit/dep-safety.test.ts +0 -126
  221. package/tests/unit/detect-system-lang.test.ts +0 -122
  222. package/tests/unit/mcp-build.test.ts +0 -162
  223. package/tests/unit/setup-needs-restart.test.ts +0 -139
  224. package/tests/unit/stop-restart.test.ts +0 -393
  225. package/tests/unit/vitest.config.ts +0 -8
  226. /package/_standalone/.next/static/{w5bqzZbd2_vdoPRB0JQ_I → Dn8EHqUedSzanCfrM8WWS}/_buildManifest.js +0 -0
  227. /package/_standalone/.next/static/{w5bqzZbd2_vdoPRB0JQ_I → Dn8EHqUedSzanCfrM8WWS}/_ssgManifest.js +0 -0
@@ -1,510 +0,0 @@
1
- /* ── MindOS Web Clipper — Popup Styles ── */
2
- /* Design: warm amber accent, low-saturation grey, Warm Industrial aesthetic */
3
-
4
- :root {
5
- --bg: #fafaf8;
6
- --bg-card: #ffffff;
7
- --bg-muted: #f3f2ef;
8
- --bg-elevated: #ffffff;
9
- --fg: #1a1a18;
10
- --fg-secondary: #4a4944;
11
- --fg-muted: #6b6a66;
12
- --fg-hint: #9c9b96;
13
- --border: #e5e4e0;
14
- --border-subtle: #edece8;
15
- --amber: #c8873a;
16
- --amber-hover: #b5762f;
17
- --amber-fg: #ffffff;
18
- --amber-subtle: rgba(200, 135, 58, 0.08);
19
- --amber-light: rgba(200, 135, 58, 0.15);
20
- --amber-text: #a06b2c;
21
- --success: #22a06b;
22
- --success-subtle: rgba(34, 160, 107, 0.08);
23
- --success-light: rgba(34, 160, 107, 0.12);
24
- --error: #e34935;
25
- --error-subtle: rgba(227, 73, 53, 0.08);
26
- --radius: 10px;
27
- --radius-sm: 6px;
28
- --radius-xs: 4px;
29
- --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
30
- --shadow-md: 0 2px 8px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
31
- --shadow-lg: 0 4px 16px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04);
32
- --font-sans: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
33
- --font-mono: 'IBM Plex Mono', 'SF Mono', monospace;
34
- --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
35
- --ease-in-out: cubic-bezier(0.45, 0, 0.55, 1);
36
- --transition: 150ms var(--ease-out);
37
- }
38
-
39
- /* Dark mode */
40
- @media (prefers-color-scheme: dark) {
41
- :root {
42
- --bg: #161614;
43
- --bg-card: #1e1e1c;
44
- --bg-muted: #262623;
45
- --bg-elevated: #2a2a27;
46
- --fg: #e8e7e3;
47
- --fg-secondary: #c5c4c0;
48
- --fg-muted: #9c9b96;
49
- --fg-hint: #6b6a66;
50
- --border: #333330;
51
- --border-subtle: #2d2d2a;
52
- --amber-hover: #d9954a;
53
- --amber-subtle: rgba(200, 135, 58, 0.12);
54
- --amber-light: rgba(200, 135, 58, 0.18);
55
- --amber-text: #d9a45e;
56
- --success-subtle: rgba(34, 160, 107, 0.12);
57
- --success-light: rgba(34, 160, 107, 0.16);
58
- --error: #f87171;
59
- --error-subtle: rgba(248, 113, 113, 0.12);
60
- --error-subtle: rgba(227, 73, 53, 0.12);
61
- --shadow-sm: 0 1px 2px rgba(0,0,0,0.2);
62
- --shadow-md: 0 2px 8px rgba(0,0,0,0.25), 0 1px 2px rgba(0,0,0,0.15);
63
- --shadow-lg: 0 4px 16px rgba(0,0,0,0.35), 0 2px 4px rgba(0,0,0,0.2);
64
- }
65
- }
66
-
67
- /* Reset */
68
- *, *::before, *::after {
69
- margin: 0;
70
- padding: 0;
71
- box-sizing: border-box;
72
- }
73
-
74
- body {
75
- width: 360px;
76
- min-height: 200px;
77
- max-height: 520px;
78
- font-family: var(--font-sans);
79
- font-size: 13px;
80
- line-height: 1.5;
81
- color: var(--fg);
82
- background: var(--bg);
83
- overflow-y: auto;
84
- -webkit-font-smoothing: antialiased;
85
- }
86
-
87
- #app {
88
- padding: 16px;
89
- }
90
-
91
- /* ── Views ── */
92
-
93
- .view {
94
- display: flex;
95
- flex-direction: column;
96
- gap: 12px;
97
- animation: fadeIn 200ms var(--ease-out);
98
- }
99
- .view[hidden] { display: none !important; }
100
-
101
- @keyframes fadeIn {
102
- from { opacity: 0; transform: translateY(4px); }
103
- to { opacity: 1; transform: translateY(0); }
104
- }
105
-
106
- /* ── Header ── */
107
-
108
- .header { display: flex; flex-direction: column; gap: 4px; }
109
- .header.compact {
110
- flex-direction: row;
111
- align-items: center;
112
- justify-content: space-between;
113
- padding-bottom: 4px;
114
- border-bottom: 1px solid var(--border-subtle);
115
- }
116
-
117
- .logo {
118
- display: flex;
119
- align-items: center;
120
- gap: 8px;
121
- }
122
- .logo img { border-radius: var(--radius-xs); }
123
- .logo-text {
124
- font-size: 14px;
125
- font-weight: 600;
126
- letter-spacing: -0.02em;
127
- color: var(--fg);
128
- }
129
-
130
- .subtitle {
131
- font-size: 12px;
132
- color: var(--fg-muted);
133
- margin-top: 2px;
134
- }
135
-
136
- /* ── Buttons ── */
137
-
138
- .btn-primary {
139
- display: flex;
140
- align-items: center;
141
- justify-content: center;
142
- gap: 6px;
143
- width: 100%;
144
- height: 40px;
145
- border: none;
146
- border-radius: var(--radius);
147
- background: var(--amber);
148
- color: var(--amber-fg);
149
- font-family: var(--font-sans);
150
- font-size: 13px;
151
- font-weight: 600;
152
- cursor: pointer;
153
- transition: background var(--transition), box-shadow var(--transition), transform 100ms var(--ease-out);
154
- box-shadow: var(--shadow-sm);
155
- }
156
- .btn-primary:hover { background: var(--amber-hover); box-shadow: var(--shadow-md); }
157
- .btn-primary:active { transform: scale(0.98); }
158
- .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; transform: none; box-shadow: none; }
159
- .btn-primary:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
160
-
161
- .btn-primary .btn-text,
162
- .btn-primary .btn-loading {
163
- display: flex;
164
- align-items: center;
165
- gap: 6px;
166
- }
167
- .btn-primary .btn-loading[hidden] { display: none; }
168
-
169
- .btn-secondary {
170
- display: flex;
171
- align-items: center;
172
- justify-content: center;
173
- width: 100%;
174
- height: 36px;
175
- border: 1px solid var(--border);
176
- border-radius: var(--radius);
177
- background: transparent;
178
- color: var(--fg);
179
- font-family: var(--font-sans);
180
- font-size: 13px;
181
- font-weight: 500;
182
- cursor: pointer;
183
- transition: background var(--transition), border-color var(--transition);
184
- }
185
- .btn-secondary:hover { background: var(--bg-muted); border-color: var(--fg-hint); }
186
- .btn-secondary:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
187
-
188
- .btn-icon {
189
- display: flex;
190
- align-items: center;
191
- justify-content: center;
192
- width: 28px;
193
- height: 28px;
194
- border: 1px solid transparent;
195
- border-radius: var(--radius-sm);
196
- background: transparent;
197
- color: var(--fg-hint);
198
- cursor: pointer;
199
- transition: color var(--transition), background var(--transition), border-color var(--transition);
200
- }
201
- .btn-icon:hover { color: var(--fg-muted); background: var(--bg-muted); border-color: var(--border); }
202
- .btn-icon:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
203
-
204
- /* ── Forms ── */
205
-
206
- .form-group {
207
- display: flex;
208
- flex-direction: column;
209
- gap: 4px;
210
- }
211
-
212
- .form-group label {
213
- font-size: 11px;
214
- font-weight: 600;
215
- text-transform: uppercase;
216
- letter-spacing: 0.04em;
217
- color: var(--fg-muted);
218
- }
219
-
220
- .form-group input {
221
- height: 38px;
222
- padding: 0 12px;
223
- border: 1px solid var(--border);
224
- border-radius: var(--radius-sm);
225
- background: var(--bg-card);
226
- color: var(--fg);
227
- font-family: var(--font-sans);
228
- font-size: 13px;
229
- transition: border-color var(--transition), box-shadow var(--transition);
230
- }
231
- .form-group input:focus-visible {
232
- outline: none;
233
- border-color: var(--amber);
234
- box-shadow: 0 0 0 3px var(--amber-subtle);
235
- }
236
- .form-group input::placeholder { color: var(--fg-hint); }
237
-
238
- .hint {
239
- font-size: 11px;
240
- color: var(--fg-hint);
241
- }
242
-
243
- /* ── Clip Preview Card ── */
244
-
245
- .clip-preview {
246
- display: flex;
247
- flex-direction: column;
248
- gap: 8px;
249
- padding: 16px;
250
- border: 1px solid var(--border);
251
- border-radius: var(--radius);
252
- background: var(--bg-card);
253
- box-shadow: var(--shadow-sm);
254
- }
255
-
256
- .title-input {
257
- border: none !important;
258
- padding: 0 !important;
259
- height: auto !important;
260
- font-size: 15px;
261
- font-weight: 600;
262
- line-height: 1.3;
263
- color: var(--fg);
264
- background: transparent;
265
- outline: none;
266
- box-shadow: none !important;
267
- }
268
- .title-input::placeholder { color: var(--fg-hint); }
269
-
270
- .meta-row {
271
- display: flex;
272
- gap: 6px;
273
- flex-wrap: wrap;
274
- }
275
-
276
- .meta-badge {
277
- display: inline-flex;
278
- align-items: center;
279
- gap: 4px;
280
- padding: 2px 8px;
281
- font-size: 11px;
282
- color: var(--fg-muted);
283
- background: var(--bg-muted);
284
- border-radius: 99px;
285
- line-height: 1.4;
286
- }
287
- .meta-badge svg { flex-shrink: 0; }
288
-
289
- /* ── Error Bar ── */
290
-
291
- .error-bar {
292
- display: flex;
293
- align-items: flex-start;
294
- gap: 8px;
295
- padding: 8px 12px;
296
- border-radius: var(--radius-sm);
297
- background: var(--error-subtle);
298
- color: var(--error);
299
- font-size: 12px;
300
- line-height: 1.4;
301
- }
302
- .error-bar[hidden] { display: none; }
303
-
304
- /* ── Success View ── */
305
-
306
- .success-card {
307
- display: flex;
308
- flex-direction: column;
309
- align-items: center;
310
- gap: 8px;
311
- padding: 24px 16px 20px;
312
- border-radius: var(--radius);
313
- background: var(--success-subtle);
314
- border: 1px solid var(--success-light);
315
- }
316
-
317
- .success-icon {
318
- display: flex;
319
- align-items: center;
320
- justify-content: center;
321
- width: 36px;
322
- height: 36px;
323
- border-radius: 50%;
324
- background: var(--success);
325
- color: white;
326
- }
327
-
328
- .success-title {
329
- font-size: 15px;
330
- font-weight: 700;
331
- color: var(--fg);
332
- }
333
-
334
- .success-detail {
335
- font-size: 11px;
336
- font-family: var(--font-mono);
337
- color: var(--fg-muted);
338
- word-break: break-all;
339
- text-align: center;
340
- line-height: 1.4;
341
- padding: 4px 8px;
342
- border-radius: var(--radius-xs);
343
- background: var(--bg-muted);
344
- max-width: 100%;
345
- }
346
-
347
- .success-actions {
348
- display: flex;
349
- gap: 8px;
350
- width: 100%;
351
- }
352
- .success-actions .btn-secondary { flex: 1; }
353
-
354
- /* ── Loading ── */
355
-
356
- .loading-state {
357
- display: flex;
358
- flex-direction: column;
359
- align-items: center;
360
- gap: 16px;
361
- padding: 40px 0;
362
- }
363
-
364
- .loading-brand {
365
- display: flex;
366
- align-items: center;
367
- gap: 8px;
368
- }
369
- .loading-brand img { border-radius: var(--radius-xs); }
370
- .loading-text {
371
- color: var(--fg-muted);
372
- font-size: 13px;
373
- }
374
-
375
- /* ── Spinner ── */
376
-
377
- .spinner {
378
- width: 18px;
379
- height: 18px;
380
- animation: spin 0.9s var(--ease-in-out) infinite;
381
- color: var(--amber);
382
- }
383
- .spinner.large { width: 28px; height: 28px; }
384
-
385
- @keyframes spin {
386
- to { transform: rotate(360deg); }
387
- }
388
-
389
- /* ── DirPicker ── */
390
-
391
- .dir-trigger {
392
- display: flex;
393
- align-items: center;
394
- gap: 8px;
395
- width: 100%;
396
- height: 38px;
397
- padding: 0 12px;
398
- border: 1px solid var(--border);
399
- border-radius: var(--radius-sm);
400
- background: var(--bg-card);
401
- color: var(--fg);
402
- font-family: var(--font-sans);
403
- font-size: 13px;
404
- text-align: left;
405
- cursor: pointer;
406
- transition: border-color var(--transition), box-shadow var(--transition);
407
- }
408
- .dir-trigger:hover { border-color: var(--fg-hint); }
409
- .dir-trigger:focus-visible { outline: none; border-color: var(--amber); box-shadow: 0 0 0 3px var(--amber-subtle); }
410
- .dir-trigger.active { border-color: var(--amber); box-shadow: 0 0 0 3px var(--amber-subtle); }
411
- .dir-trigger .dir-icon { color: var(--amber); flex-shrink: 0; }
412
- .dir-trigger .dir-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
413
- .dir-trigger .dir-chevron { flex-shrink: 0; color: var(--fg-hint); transition: transform var(--transition); }
414
- .dir-trigger.active .dir-chevron { transform: rotate(180deg); }
415
-
416
- .dir-panel {
417
- border: 1px solid var(--amber);
418
- border-radius: var(--radius-sm);
419
- background: var(--bg-card);
420
- overflow: hidden;
421
- margin-top: 4px;
422
- box-shadow: var(--shadow-md);
423
- animation: slideDown 150ms var(--ease-out);
424
- }
425
- .dir-panel[hidden] { display: none; }
426
-
427
- @keyframes slideDown {
428
- from { opacity: 0; transform: translateY(-4px); }
429
- to { opacity: 1; transform: translateY(0); }
430
- }
431
-
432
- .dir-breadcrumb {
433
- display: flex;
434
- align-items: center;
435
- gap: 2px;
436
- padding: 6px 10px;
437
- background: var(--bg-muted);
438
- border-bottom: 1px solid var(--border);
439
- overflow-x: auto;
440
- font-size: 11px;
441
- }
442
- .dir-breadcrumb button {
443
- flex-shrink: 0;
444
- padding: 2px 6px;
445
- border: none;
446
- border-radius: var(--radius-xs);
447
- background: transparent;
448
- color: var(--fg-muted);
449
- font-family: var(--font-sans);
450
- font-size: 11px;
451
- cursor: pointer;
452
- transition: color var(--transition), background var(--transition);
453
- }
454
- .dir-breadcrumb button:hover { color: var(--fg); background: var(--amber-subtle); }
455
- .dir-breadcrumb button.active { color: var(--amber); font-weight: 600; }
456
- .dir-breadcrumb .crumb-sep {
457
- color: var(--fg-hint);
458
- font-size: 9px;
459
- flex-shrink: 0;
460
- }
461
-
462
- .dir-list {
463
- max-height: 180px;
464
- overflow-y: auto;
465
- }
466
- .dir-list:empty::after {
467
- content: 'No subdirectories';
468
- display: block;
469
- padding: 12px;
470
- text-align: center;
471
- color: var(--fg-hint);
472
- font-size: 11px;
473
- }
474
-
475
- .dir-item {
476
- display: flex;
477
- align-items: center;
478
- gap: 8px;
479
- width: 100%;
480
- padding: 7px 10px;
481
- border: none;
482
- background: transparent;
483
- color: var(--fg);
484
- font-family: var(--font-sans);
485
- font-size: 12px;
486
- text-align: left;
487
- cursor: pointer;
488
- transition: background var(--transition);
489
- }
490
- .dir-item:hover { background: var(--amber-subtle); }
491
- .dir-item .dir-item-icon { color: var(--amber); flex-shrink: 0; }
492
- .dir-item .dir-item-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
493
- .dir-item .dir-item-arrow { color: var(--fg-hint); flex-shrink: 0; }
494
-
495
- .dir-confirm {
496
- display: flex;
497
- align-items: center;
498
- justify-content: center;
499
- width: 100%;
500
- padding: 6px;
501
- border: none;
502
- border-top: 1px solid var(--border);
503
- background: transparent;
504
- color: var(--amber);
505
- font-weight: 600;
506
- font-size: 12px;
507
- cursor: pointer;
508
- transition: background var(--transition);
509
- }
510
- .dir-confirm:hover { background: var(--amber-subtle); }
@@ -1,128 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=380, initial-scale=1.0">
6
- <title>MindOS Web Clipper</title>
7
- <link rel="stylesheet" href="popup.css">
8
- </head>
9
- <body>
10
- <div id="app">
11
- <!-- Setup View (first time) -->
12
- <div id="view-setup" class="view" hidden>
13
- <div class="header">
14
- <div class="logo">
15
- <img src="../icons/icon-32.png" alt="" width="24" height="24">
16
- <span class="logo-text">MindOS</span>
17
- </div>
18
- <p class="subtitle">Connect to your knowledge base</p>
19
- </div>
20
-
21
- <div class="form-group">
22
- <label for="setup-url">MindOS URL</label>
23
- <input id="setup-url" type="url" value="http://localhost:3456" placeholder="http://localhost:3456" spellcheck="false" autocomplete="off">
24
- </div>
25
-
26
- <div class="form-group">
27
- <label for="setup-token">Auth Token</label>
28
- <input id="setup-token" type="password" placeholder="Paste your token here" spellcheck="false" autocomplete="off">
29
- <p class="hint">Find it in MindOS Settings → MCP</p>
30
- </div>
31
-
32
- <div id="setup-error" class="error-bar" hidden></div>
33
-
34
- <button id="btn-connect" class="btn-primary">
35
- <span class="btn-text">Connect</span>
36
- <span class="btn-loading" hidden>
37
- <svg class="spinner" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31 31" stroke-linecap="round"/></svg>
38
- Connecting...
39
- </span>
40
- </button>
41
- </div>
42
-
43
- <!-- Clip View (main) -->
44
- <div id="view-clip" class="view" hidden>
45
- <div class="header compact">
46
- <div class="logo">
47
- <img src="../icons/icon-32.png" alt="" width="20" height="20">
48
- <span class="logo-text">MindOS</span>
49
- </div>
50
- <button id="btn-settings" class="btn-icon" title="Settings" aria-label="Settings">
51
- <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>
52
- </button>
53
- </div>
54
-
55
- <div class="clip-preview">
56
- <input id="clip-title" type="text" class="title-input" placeholder="Page title" aria-label="Edit page title">
57
- <div class="meta-row">
58
- <span id="clip-site" class="meta-badge">
59
- <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>
60
- <span id="clip-site-text"></span>
61
- </span>
62
- <span id="clip-words" class="meta-badge">
63
- <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
64
- <span id="clip-words-text"></span>
65
- </span>
66
- </div>
67
- </div>
68
-
69
- <div class="form-group">
70
- <label>Save to</label>
71
- <button id="dir-trigger" type="button" class="dir-trigger" aria-expanded="false" aria-controls="dir-panel">
72
- <svg class="dir-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg>
73
- <span id="dir-label" class="dir-label">Inbox</span>
74
- <svg class="dir-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
75
- </button>
76
- <div id="dir-panel" class="dir-panel" hidden>
77
- <div id="dir-breadcrumb" class="dir-breadcrumb"></div>
78
- <div id="dir-list" class="dir-list" role="listbox" aria-label="Directory list"></div>
79
- <button id="dir-confirm" type="button" class="dir-confirm" aria-label="Confirm directory selection">
80
- <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
81
- </button>
82
- </div>
83
- </div>
84
-
85
- <div id="clip-error" class="error-bar" hidden></div>
86
-
87
- <button id="btn-save" class="btn-primary">
88
- <span class="btn-text">
89
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14"/><path d="m5 12 7-7 7 7"/></svg>
90
- Save to MindOS
91
- </span>
92
- <span class="btn-loading" hidden>
93
- <svg class="spinner" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31 31" stroke-linecap="round"/></svg>
94
- Saving...
95
- </span>
96
- </button>
97
- </div>
98
-
99
- <!-- Success View -->
100
- <div id="view-success" class="view" hidden>
101
- <div class="success-card">
102
- <div class="success-icon" aria-hidden="true">
103
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
104
- </div>
105
- <p class="success-title">Saved!</p>
106
- <p id="success-detail" class="success-detail"></p>
107
- </div>
108
- <div class="success-actions">
109
- <button id="btn-clip-another" class="btn-secondary">Clip Again</button>
110
- <button id="btn-done" class="btn-secondary">Done</button>
111
- </div>
112
- </div>
113
-
114
- <!-- Loading View (extracting) -->
115
- <div id="view-loading" class="view" hidden>
116
- <div class="loading-state">
117
- <div class="loading-brand">
118
- <img src="../icons/icon-32.png" alt="" width="24" height="24">
119
- </div>
120
- <svg class="spinner large" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31 31" stroke-linecap="round"/></svg>
121
- <p class="loading-text">Reading page content...</p>
122
- </div>
123
- </div>
124
- </div>
125
-
126
- <script type="module" src="popup.js"></script>
127
- </body>
128
- </html>