@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.
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +27 -27
- package/_standalone/.next/build-manifest.json +3 -3
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/react-loadable-manifest.json +4 -4
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +1 -1
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +1 -1
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +1 -1
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +1 -1
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +1 -1
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +2 -2
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app-paths-manifest.json +27 -27
- package/_standalone/.next/server/chunks/{3311.js → 2449.js} +2 -2
- package/_standalone/.next/server/chunks/5299.js +1 -1
- package/_standalone/.next/server/chunks/6022.js +34 -34
- package/_standalone/.next/server/middleware-build-manifest.js +1 -1
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/chunks/{7143.879daa87569c5b02.js → 4094.09364c01df411380.js} +1 -1
- package/_standalone/.next/static/chunks/{5795.d9099a1afecd6047.js → 5331.c89084fd7f67887d.js} +2 -2
- package/_standalone/.next/static/chunks/app/{layout-a344709b8447be75.js → layout-fcbde5bee626d21a.js} +63 -63
- package/_standalone/.next/static/chunks/app/trash/page-e623ff0ab35de002.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-49c4eff6ffdb5168.js +12 -0
- package/_standalone/.next/static/chunks/{webpack-2f2787d3469d3df1.js → webpack-dc486b68118d1328.js} +1 -1
- package/_standalone/.next/trace +72 -72
- package/_standalone/package-lock.json +2 -2
- package/_standalone/package.json +1 -1
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/_standalone/.next/static/chunks/app/trash/page-0907fdd06a4467de.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-f53ce199b4a4bbb5.js +0 -12
- package/browser-extension/README.md +0 -160
- package/browser-extension/build.mjs +0 -63
- package/browser-extension/extension/background/service-worker.js +0 -1
- package/browser-extension/extension/content/extractor.js +0 -2
- package/browser-extension/extension/icons/icon-128.png +0 -0
- package/browser-extension/extension/icons/icon-128.svg +0 -4
- package/browser-extension/extension/icons/icon-16.png +0 -0
- package/browser-extension/extension/icons/icon-16.svg +0 -4
- package/browser-extension/extension/icons/icon-32.png +0 -0
- package/browser-extension/extension/icons/icon-32.svg +0 -4
- package/browser-extension/extension/icons/icon-48.png +0 -0
- package/browser-extension/extension/icons/icon-48.svg +0 -4
- package/browser-extension/extension/manifest.json +0 -47
- package/browser-extension/extension/popup/popup.css +0 -510
- package/browser-extension/extension/popup/popup.html +0 -128
- package/browser-extension/extension/popup/popup.js +0 -73
- package/browser-extension/package-lock.json +0 -617
- package/browser-extension/package.json +0 -21
- package/browser-extension/scripts/gen-icons.sh +0 -38
- package/browser-extension/src/background/service-worker.ts +0 -27
- package/browser-extension/src/content/extractor.ts +0 -44
- package/browser-extension/src/icons/icon-128.png +0 -0
- package/browser-extension/src/icons/icon-128.svg +0 -4
- package/browser-extension/src/icons/icon-16.png +0 -0
- package/browser-extension/src/icons/icon-16.svg +0 -4
- package/browser-extension/src/icons/icon-32.png +0 -0
- package/browser-extension/src/icons/icon-32.svg +0 -4
- package/browser-extension/src/icons/icon-48.png +0 -0
- package/browser-extension/src/icons/icon-48.svg +0 -4
- package/browser-extension/src/lib/api.ts +0 -146
- package/browser-extension/src/lib/markdown.ts +0 -68
- package/browser-extension/src/lib/storage.ts +0 -37
- package/browser-extension/src/lib/types.ts +0 -42
- package/browser-extension/src/manifest.json +0 -47
- package/browser-extension/src/popup/popup.css +0 -510
- package/browser-extension/src/popup/popup.html +0 -128
- package/browser-extension/src/popup/popup.ts +0 -416
- package/browser-extension/tsconfig.json +0 -16
- package/tests/e2e/README.md +0 -25
- package/tests/e2e/navigation.spec.ts +0 -14
- package/tests/e2e/playwright.config.ts +0 -14
- package/tests/integration/README.md +0 -25
- package/tests/integration/mcp-contract.test.ts +0 -57
- package/tests/integration/mcp-transport.test.ts +0 -361
- package/tests/integration/package-lock.json +0 -1463
- package/tests/integration/package.json +0 -8
- package/tests/integration/vitest.config.ts +0 -11
- package/tests/security-hardening.test.ts +0 -456
- package/tests/unit/build-integrity.test.ts +0 -137
- package/tests/unit/cli-build.test.ts +0 -180
- package/tests/unit/cli-config.test.ts +0 -257
- package/tests/unit/cli-mcp-install-toml.test.ts +0 -586
- package/tests/unit/cli-mcp-install.test.ts +0 -123
- package/tests/unit/cli-mcp-stdio-default.test.ts +0 -180
- package/tests/unit/cli-modules-load.test.ts +0 -64
- package/tests/unit/cli-port.test.ts +0 -87
- package/tests/unit/cli-skill-auto-copy.test.ts +0 -260
- package/tests/unit/cli-smoke.test.ts +0 -88
- package/tests/unit/cli-uninstall.test.ts +0 -218
- package/tests/unit/cli-update-root.test.ts +0 -89
- package/tests/unit/cli-user-flow-sim.test.ts +0 -506
- package/tests/unit/cli-wait-hint.test.ts +0 -86
- package/tests/unit/custom-agents.test.ts +0 -478
- package/tests/unit/dep-safety.test.ts +0 -126
- package/tests/unit/detect-system-lang.test.ts +0 -122
- package/tests/unit/mcp-build.test.ts +0 -162
- package/tests/unit/setup-needs-restart.test.ts +0 -139
- package/tests/unit/stop-restart.test.ts +0 -393
- package/tests/unit/vitest.config.ts +0 -8
- /package/_standalone/.next/static/{w5bqzZbd2_vdoPRB0JQ_I → Dn8EHqUedSzanCfrM8WWS}/_buildManifest.js +0 -0
- /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>
|