total-recall-brain 3.13.0 → 3.13.2
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/README.md +91 -108
- package/bin/antigravity.mjs +81 -52
- package/bin/total-recall.mjs +32 -57
- package/extension/background.js +1 -1
- package/extension/options/options.js +9 -3
- package/extension/sidepanel/sidepanel.js +0 -2
- package/frontend/index.html +4 -3
- package/frontend/package.json +1 -0
- package/frontend/src/App.tsx +109 -152
- package/frontend/src/api.ts +605 -23
- package/frontend/src/components/BrainSelector.tsx +211 -199
- package/frontend/src/components/DocumentEditorModal.tsx +57 -0
- package/frontend/src/components/DocumentTable.tsx +47 -0
- package/frontend/src/components/Graph3D.tsx +120 -71
- package/frontend/src/components/UsageChart.tsx +3 -3
- package/frontend/src/components/brand/BrandMark.tsx +95 -0
- package/frontend/src/index.css +286 -86
- package/frontend/src/pages/ApiKeysPage.tsx +1878 -215
- package/frontend/src/pages/ChatPage.tsx +103 -45
- package/frontend/src/pages/DesignDocsPage.tsx +5 -5
- package/frontend/src/pages/FilesPage.tsx +10 -6
- package/frontend/src/pages/GraphPage.tsx +5 -3
- package/frontend/src/pages/HelpPage.tsx +2 -2
- package/frontend/src/pages/InboxPage.tsx +82 -0
- package/frontend/src/pages/InstructionsPage.tsx +1 -1
- package/frontend/src/pages/IntegrationsPage.tsx +21 -10
- package/frontend/src/pages/LoginPage.tsx +95 -77
- package/frontend/src/pages/MemoryPage.tsx +31 -8
- package/frontend/src/pages/OnboardingPage.tsx +690 -0
- package/frontend/src/pages/OpenWikiPage.tsx +412 -323
- package/frontend/src/pages/SettingsPage.tsx +825 -922
- package/frontend/src/pages/SkillsPage.tsx +272 -147
- package/frontend/src/pages/UsagePage.tsx +23 -31
- package/frontend/src/pages/VaultPage.tsx +223 -0
- package/frontend/src/types.ts +13 -0
- package/package.json +4 -4
- package/scaffold/.agent/skills/total-recall/SKILL.md +43 -4
- package/scaffold/.agent/skills/total-recall/modules/README.md +10 -0
- package/scaffold/.agent/skills/total-recall/modules/agents/README.md +5 -0
- package/scaffold/.agent/skills/total-recall/{skills/tr-cli-agents → modules/agents}/agents.yml +8 -0
- package/scaffold/.agent/skills/total-recall/modules/skill-deploy/README.md +9 -0
- package/scaffold/.agent/skills/total-recall/openwiki/README.md +10 -0
- package/scaffold/.agent/skills/total-recall/openwiki/architecture.md +5 -0
- package/scaffold/.agent/skills/total-recall/openwiki/ide.md +10 -0
- package/scaffold/.agent/skills/total-recall/openwiki/memory.md +11 -0
- package/scaffold/.agent/skills/total-recall/openwiki/secrets.md +7 -0
- package/scaffold/.agent/skills/total-recall/openwiki/skills.md +7 -0
- package/src/cli/brain.mjs +63 -5
- package/src/cli/connect.mjs +11 -19
- package/src/cli/daemon.mjs +5 -4
- package/src/cli/deploy-ui.mjs +8 -3
- package/src/cli/deploy.mjs +84 -27
- package/src/cli/ingest/index.mjs +1 -1
- package/src/cli/init.mjs +63 -34
- package/src/cli/remember.mjs +3 -3
- package/src/cli/secret.mjs +812 -0
- package/src/cli/setup.mjs +34 -7
- package/src/cli/share.mjs +2 -2
- package/src/cli/skill.mjs +396 -35
- package/src/cli/sync.mjs +4 -4
- package/src/cli/task.mjs +287 -0
- package/src/core/clarity-rewriter.mjs +5 -5
- package/src/core/config.mjs +44 -2
- package/src/core/conflict-detector.mjs +5 -5
- package/src/core/crons.mjs +54 -0
- package/src/core/daemon-loop.mjs +87 -235
- package/src/core/dream.mjs +170 -10
- package/src/core/env-import.mjs +456 -0
- package/src/core/fact-seeker.mjs +14 -14
- package/src/core/import-rules.mjs +20 -7
- package/src/core/inference-engine.mjs +3 -3
- package/src/core/migrate.mjs +14 -8
- package/src/core/okf-adapter.mjs +2 -2
- package/src/core/operation-validator.mjs +39 -331
- package/src/core/optimizer.mjs +7 -0
- package/src/core/post-mortem.mjs +2 -2
- package/src/core/project-brain.mjs +349 -0
- package/src/core/provider-catalog.mjs +296 -0
- package/src/core/quick-capture.mjs +1 -1
- package/src/core/remote-vault-sync.mjs +194 -0
- package/src/core/research-queue.mjs +7 -11
- package/src/core/runtime.mjs +33 -9
- package/src/core/scheduler.mjs +59 -5
- package/src/core/schema.mjs +14 -0
- package/src/core/search.mjs +1 -1
- package/src/core/secrets-env-export.mjs +323 -0
- package/src/core/secrets-rotate.mjs +245 -0
- package/src/core/secrets-store.mjs +645 -0
- package/src/core/semantic-index.mjs +3 -3
- package/src/core/skills-registry.mjs +1062 -0
- package/src/core/source-adapters.mjs +4 -1
- package/src/core/ssss-host-extension.mjs +94 -0
- package/src/core/ssss-kernel-bridge.mjs +530 -0
- package/src/core/surface.mjs +14 -0
- package/src/core/task-envelope.mjs +298 -0
- package/src/core/task-executors.mjs +600 -0
- package/src/core/validated-write.mjs +124 -56
- package/src/core/vault.mjs +21 -34
- package/src/core/webauthn-store.mjs +272 -0
- package/src/server/api.mjs +26 -16
- package/src/server/auth.mjs +51 -0
- package/src/server/index.mjs +3 -3
- package/src/server/keys.mjs +30 -4
- package/src/server/rest.mjs +198 -25
- package/src/server/route-manifest.json +156 -0
- package/src/server/routes/_shared.mjs +40 -1
- package/src/server/routes/docs.mjs +260 -0
- package/src/server/routes/memory.mjs +145 -32
- package/src/server/routes/research.mjs +30 -0
- package/src/server/routes/secrets.mjs +470 -0
- package/src/server/routes/share.mjs +2 -2
- package/src/server/routes/skills.mjs +452 -54
- package/src/server/routes/sync.mjs +48 -0
- package/src/server/routes/webauthn.mjs +184 -0
- package/src/server/update-route-manifest.mjs +39 -0
- package/templates/onboarding-interview.md +32 -22
- package/templates/openwiki/README.md +10 -0
- package/templates/openwiki/architecture.md +5 -0
- package/templates/openwiki/ide.md +10 -0
- package/templates/openwiki/memory.md +11 -0
- package/templates/openwiki/secrets.md +7 -0
- package/templates/openwiki/skills.md +7 -0
- package/scaffold/.agent/skills/total-recall/skills/tr-cli-agents/SKILL.md +0 -121
- package/scaffold/.agent/skills/total-recall/skills/tr-cli-agents/references/antigravity.txt +0 -20
- package/scaffold/.agent/skills/total-recall/skills/tr-cli-agents/references/claude.txt +0 -58
- package/scaffold/.agent/skills/total-recall/skills/tr-cli-agents/references/codex.txt +0 -81
- package/scaffold/.agent/skills/total-recall/skills/tr-cli-agents/references/gemini.txt +0 -44
- package/scaffold/.agent/skills/total-recall/skills/tr-cli-agents/scripts/.gitkeep +0 -0
- package/scaffold/.agent/skills/total-recall/skills/tr-cli-agents/subagents/.gitkeep +0 -0
- package/scaffold/.agent/skills/total-recall/skills/tr-research/SKILL.md +0 -338
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/SKILL.md +0 -282
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/assets/skill-template/SKILL.md +0 -20
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/evals/evals.json +0 -20
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/hooks/on-skill-add.sh +0 -14
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/hooks/on-skill-delete.sh +0 -14
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/learnings/.gitkeep +0 -0
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/references/.gitkeep +0 -0
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/scripts/.gitkeep +0 -0
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/scripts/create-skill.sh +0 -65
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/scripts/enforce-skill-optimization.mjs +0 -135
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/scripts/skill-watcher.mjs +0 -64
- package/scaffold/.agent/skills/total-recall/skills/tr-skill/subagents/audit-all-skills.md +0 -62
- package/scaffold/.agent/skills/total-recall/skills/tr-ssss/SKILL.md +0 -298
- package/scaffold/.agent/skills/total-recall/skills/tr-ssss/evals/evals.json +0 -17
- package/scaffold/.agent/skills/total-recall/skills/tr-ssss/references/CHANGELOG.md +0 -124
- package/scaffold/.agent/skills/total-recall/skills/tr-ssss/references/ssss-spec.md +0 -1325
- package/scaffold/.agent/skills/total-recall/skills/tr-ssss/scripts/validate-schema.mjs +0 -232
- package/scaffold/.agent/skills/total-recall/skills/tr-ssss/subagents/audit-ssss-node.md +0 -9
- /package/scaffold/.agent/skills/total-recall/{skills/tr-cli-agents/evals → modules/skill-deploy/scripts}/.gitkeep +0 -0
- /package/scaffold/.agent/skills/total-recall/{skills/tr-skill → modules/skill-deploy}/scripts/find-skills.mjs +0 -0
- /package/scaffold/.agent/skills/total-recall/{skills/tr-skill → modules/skill-deploy}/scripts/install-skill.mjs +0 -0
- /package/scaffold/.agent/skills/total-recall/{skills/tr-skill → modules/skill-deploy}/scripts/scan-skill.mjs +0 -0
package/frontend/src/index.css
CHANGED
|
@@ -1,49 +1,71 @@
|
|
|
1
1
|
/* ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
-
Total Recall — Design System
|
|
2
|
+
Total Recall — Design System (premium · brand blue vault)
|
|
3
|
+
Brand mark: portfolio-site/assets/logos/total-recall.png (cube lockup)
|
|
3
4
|
═══════════════════════════════════════════════════════════════════════════════ */
|
|
4
5
|
|
|
5
6
|
:root {
|
|
6
|
-
/*
|
|
7
|
-
--bg-primary: #
|
|
8
|
-
--bg-secondary: #
|
|
9
|
-
--bg-tertiary: #
|
|
10
|
-
--bg-elevated: #
|
|
11
|
-
--bg-hover: #
|
|
12
|
-
--bg-active: #
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
--accent
|
|
16
|
-
--accent-
|
|
17
|
-
--accent-
|
|
18
|
-
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
|
|
22
|
-
--
|
|
23
|
-
--
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
--
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
-
--
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
--
|
|
7
|
+
/* Surfaces — deep slate with cool blue undertone */
|
|
8
|
+
--bg-primary: #070b14;
|
|
9
|
+
--bg-secondary: #0c1220;
|
|
10
|
+
--bg-tertiary: #121a2b;
|
|
11
|
+
--bg-elevated: #172033;
|
|
12
|
+
--bg-hover: #1c2740;
|
|
13
|
+
--bg-active: #243352;
|
|
14
|
+
|
|
15
|
+
/* Brand blues from official cube lockup */
|
|
16
|
+
--accent: #3b82f6;
|
|
17
|
+
--accent-deep: #1e3a8a;
|
|
18
|
+
--accent-glow: rgba(59, 130, 246, 0.28);
|
|
19
|
+
--accent-hover: #60a5fa;
|
|
20
|
+
--accent-muted: rgba(59, 130, 246, 0.14);
|
|
21
|
+
--accent-soft: rgba(147, 197, 253, 0.12);
|
|
22
|
+
/* Legacy alias used by older page components */
|
|
23
|
+
--purple-primary: var(--accent);
|
|
24
|
+
--purple-border: var(--border-accent);
|
|
25
|
+
|
|
26
|
+
--success: #34d399;
|
|
27
|
+
--success-muted: rgba(52, 211, 153, 0.12);
|
|
28
|
+
--warning: #fbbf24;
|
|
29
|
+
--warning-muted: rgba(251, 191, 36, 0.12);
|
|
30
|
+
--error: #f87171;
|
|
31
|
+
--error-muted: rgba(248, 113, 113, 0.12);
|
|
32
|
+
|
|
33
|
+
--text-primary: #f1f5f9;
|
|
34
|
+
--text-secondary: #94a3b8;
|
|
35
|
+
--text-tertiary: #64748b;
|
|
36
|
+
--text-inverse: #070b14;
|
|
37
|
+
|
|
38
|
+
--border: rgba(148, 163, 184, 0.1);
|
|
39
|
+
--border-hover: rgba(148, 163, 184, 0.22);
|
|
40
|
+
--border-accent: rgba(59, 130, 246, 0.35);
|
|
41
|
+
|
|
42
|
+
/* Glass */
|
|
43
|
+
--glass: rgba(12, 18, 32, 0.72);
|
|
44
|
+
--glass-border: rgba(148, 163, 184, 0.12);
|
|
45
|
+
--mesh-1: rgba(30, 58, 138, 0.35);
|
|
46
|
+
--mesh-2: rgba(59, 130, 246, 0.12);
|
|
47
|
+
--mesh-3: rgba(15, 23, 42, 0.9);
|
|
33
48
|
|
|
34
49
|
/* Typography */
|
|
35
|
-
--font-sans: 'Inter', -apple-system, sans-serif;
|
|
36
|
-
--font-mono: 'JetBrains Mono', 'SF Mono', monospace;
|
|
50
|
+
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
51
|
+
--font-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, monospace;
|
|
37
52
|
|
|
38
53
|
/* Spacing */
|
|
39
|
-
--sidebar-width:
|
|
40
|
-
--radius-sm:
|
|
41
|
-
--radius-md:
|
|
42
|
-
--radius-lg:
|
|
54
|
+
--sidebar-width: 252px;
|
|
55
|
+
--radius-sm: 8px;
|
|
56
|
+
--radius-md: 12px;
|
|
57
|
+
--radius-lg: 18px;
|
|
58
|
+
--radius-xl: 24px;
|
|
59
|
+
|
|
60
|
+
/* Shadows */
|
|
61
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
|
|
62
|
+
--shadow-md: 0 8px 24px rgba(0, 0, 0, 0.35);
|
|
63
|
+
--shadow-lg: 0 24px 64px rgba(0, 0, 0, 0.45);
|
|
64
|
+
--shadow-glow: 0 0 40px rgba(59, 130, 246, 0.18);
|
|
43
65
|
|
|
44
66
|
/* Transitions */
|
|
45
|
-
--transition-fast:
|
|
46
|
-
--transition-normal:
|
|
67
|
+
--transition-fast: 140ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
68
|
+
--transition-normal: 220ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
47
69
|
}
|
|
48
70
|
|
|
49
71
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
@@ -56,6 +78,17 @@ html, body, #root {
|
|
|
56
78
|
font-size: 14px;
|
|
57
79
|
line-height: 1.6;
|
|
58
80
|
-webkit-font-smoothing: antialiased;
|
|
81
|
+
-moz-osx-font-smoothing: grayscale;
|
|
82
|
+
text-rendering: optimizeLegibility;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Ambient mesh on root chrome */
|
|
86
|
+
body {
|
|
87
|
+
background:
|
|
88
|
+
radial-gradient(1200px 600px at 10% -10%, var(--mesh-1), transparent 55%),
|
|
89
|
+
radial-gradient(900px 500px at 100% 0%, var(--mesh-2), transparent 50%),
|
|
90
|
+
radial-gradient(800px 400px at 50% 100%, rgba(30, 58, 138, 0.2), transparent 60%),
|
|
91
|
+
var(--bg-primary);
|
|
59
92
|
}
|
|
60
93
|
|
|
61
94
|
a { color: var(--accent); text-decoration: none; }
|
|
@@ -81,40 +114,71 @@ code, pre { font-family: var(--font-mono); }
|
|
|
81
114
|
display: flex;
|
|
82
115
|
height: 100vh;
|
|
83
116
|
overflow: hidden;
|
|
117
|
+
position: relative;
|
|
84
118
|
}
|
|
85
119
|
|
|
86
120
|
.sidebar {
|
|
87
121
|
width: var(--sidebar-width);
|
|
88
122
|
min-width: var(--sidebar-width);
|
|
89
|
-
background: var(--
|
|
90
|
-
|
|
123
|
+
background: var(--glass);
|
|
124
|
+
backdrop-filter: blur(20px) saturate(1.4);
|
|
125
|
+
-webkit-backdrop-filter: blur(20px) saturate(1.4);
|
|
126
|
+
border-right: 1px solid var(--glass-border);
|
|
91
127
|
display: flex;
|
|
92
128
|
flex-direction: column;
|
|
93
|
-
padding:
|
|
129
|
+
padding: 14px 0 12px;
|
|
94
130
|
transition: transform var(--transition-normal);
|
|
95
131
|
z-index: 100;
|
|
132
|
+
box-shadow: 4px 0 40px rgba(0, 0, 0, 0.25);
|
|
96
133
|
}
|
|
97
134
|
|
|
98
135
|
.sidebar-brand {
|
|
99
|
-
padding:
|
|
136
|
+
padding: 4px 16px 18px;
|
|
100
137
|
border-bottom: 1px solid var(--border);
|
|
101
|
-
margin-bottom:
|
|
138
|
+
margin-bottom: 10px;
|
|
139
|
+
display: flex;
|
|
140
|
+
flex-direction: column;
|
|
141
|
+
gap: 10px;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.sidebar-brand-row {
|
|
145
|
+
display: flex;
|
|
146
|
+
align-items: center;
|
|
147
|
+
gap: 12px;
|
|
102
148
|
}
|
|
103
149
|
|
|
104
150
|
.sidebar-brand h1 {
|
|
105
|
-
font-size:
|
|
151
|
+
font-size: 15px;
|
|
106
152
|
font-weight: 700;
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
background-clip: text;
|
|
111
|
-
letter-spacing: -0.02em;
|
|
153
|
+
color: var(--text-primary);
|
|
154
|
+
letter-spacing: -0.03em;
|
|
155
|
+
line-height: 1.2;
|
|
112
156
|
}
|
|
113
157
|
|
|
114
158
|
.sidebar-brand span {
|
|
115
159
|
font-size: 11px;
|
|
116
160
|
color: var(--text-tertiary);
|
|
117
|
-
font-weight:
|
|
161
|
+
font-weight: 500;
|
|
162
|
+
letter-spacing: 0.02em;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.sidebar-brand-lockup {
|
|
166
|
+
width: 100%;
|
|
167
|
+
border-radius: 12px;
|
|
168
|
+
overflow: hidden;
|
|
169
|
+
background: linear-gradient(180deg, #f8fafc 0%, #e8eef9 100%);
|
|
170
|
+
padding: 10px 12px;
|
|
171
|
+
box-shadow:
|
|
172
|
+
0 1px 0 rgba(255, 255, 255, 0.7) inset,
|
|
173
|
+
0 8px 20px rgba(15, 23, 42, 0.35),
|
|
174
|
+
0 0 0 1px rgba(148, 163, 184, 0.2);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.sidebar-brand-lockup img {
|
|
178
|
+
width: 100%;
|
|
179
|
+
height: auto;
|
|
180
|
+
display: block;
|
|
181
|
+
object-fit: contain;
|
|
118
182
|
}
|
|
119
183
|
|
|
120
184
|
.sidebar-nav {
|
|
@@ -122,46 +186,75 @@ code, pre { font-family: var(--font-mono); }
|
|
|
122
186
|
display: flex;
|
|
123
187
|
flex-direction: column;
|
|
124
188
|
gap: 2px;
|
|
125
|
-
padding: 0
|
|
189
|
+
padding: 0 10px;
|
|
126
190
|
overflow-y: auto;
|
|
191
|
+
scrollbar-width: thin;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.nav-section-label {
|
|
195
|
+
font-size: 10px;
|
|
196
|
+
font-weight: 600;
|
|
197
|
+
text-transform: uppercase;
|
|
198
|
+
letter-spacing: 0.08em;
|
|
199
|
+
color: var(--text-tertiary);
|
|
200
|
+
padding: 12px 12px 6px;
|
|
201
|
+
opacity: 0.85;
|
|
127
202
|
}
|
|
128
203
|
|
|
129
204
|
.nav-link {
|
|
130
205
|
display: flex;
|
|
131
206
|
align-items: center;
|
|
132
207
|
gap: 10px;
|
|
133
|
-
padding:
|
|
134
|
-
border-radius:
|
|
208
|
+
padding: 9px 12px;
|
|
209
|
+
border-radius: 10px;
|
|
135
210
|
color: var(--text-secondary);
|
|
136
211
|
font-size: 13px;
|
|
137
212
|
font-weight: 500;
|
|
138
213
|
transition: all var(--transition-fast);
|
|
139
214
|
text-decoration: none;
|
|
215
|
+
border: 1px solid transparent;
|
|
216
|
+
position: relative;
|
|
140
217
|
}
|
|
141
218
|
|
|
142
219
|
.nav-link:hover {
|
|
143
|
-
background:
|
|
220
|
+
background: rgba(148, 163, 184, 0.08);
|
|
144
221
|
color: var(--text-primary);
|
|
145
222
|
}
|
|
146
223
|
|
|
147
224
|
.nav-link.active {
|
|
148
|
-
background:
|
|
149
|
-
color:
|
|
225
|
+
background: linear-gradient(135deg, rgba(59, 130, 246, 0.18), rgba(30, 58, 138, 0.22));
|
|
226
|
+
color: #dbeafe;
|
|
227
|
+
border-color: var(--border-accent);
|
|
228
|
+
box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.nav-link.active::before {
|
|
232
|
+
content: '';
|
|
233
|
+
position: absolute;
|
|
234
|
+
left: 0;
|
|
235
|
+
top: 20%;
|
|
236
|
+
bottom: 20%;
|
|
237
|
+
width: 3px;
|
|
238
|
+
border-radius: 0 3px 3px 0;
|
|
239
|
+
background: linear-gradient(180deg, #60a5fa, #2563eb);
|
|
240
|
+
box-shadow: 0 0 12px rgba(59, 130, 246, 0.6);
|
|
150
241
|
}
|
|
151
242
|
|
|
152
243
|
.nav-link svg {
|
|
153
244
|
width: 18px;
|
|
154
245
|
height: 18px;
|
|
155
246
|
flex-shrink: 0;
|
|
156
|
-
opacity: 0.
|
|
247
|
+
opacity: 0.72;
|
|
157
248
|
}
|
|
158
249
|
|
|
159
|
-
.nav-link.active svg { opacity: 1; }
|
|
250
|
+
.nav-link.active svg { opacity: 1; color: #93c5fd; }
|
|
251
|
+
.nav-link:hover svg { opacity: 0.95; }
|
|
160
252
|
|
|
161
253
|
.sidebar-footer {
|
|
162
|
-
padding: 12px
|
|
254
|
+
padding: 12px 14px;
|
|
163
255
|
border-top: 1px solid var(--border);
|
|
164
256
|
margin-top: 8px;
|
|
257
|
+
background: linear-gradient(180deg, transparent, rgba(15, 23, 42, 0.4));
|
|
165
258
|
}
|
|
166
259
|
|
|
167
260
|
.main-content {
|
|
@@ -170,41 +263,51 @@ code, pre { font-family: var(--font-mono); }
|
|
|
170
263
|
flex-direction: column;
|
|
171
264
|
overflow: hidden;
|
|
172
265
|
min-width: 0;
|
|
266
|
+
background: transparent;
|
|
173
267
|
}
|
|
174
268
|
|
|
175
269
|
.page {
|
|
176
270
|
flex: 1;
|
|
177
271
|
overflow-y: auto;
|
|
178
|
-
padding: 28px 32px;
|
|
272
|
+
padding: 28px 32px 40px;
|
|
179
273
|
}
|
|
180
274
|
|
|
181
275
|
.page-header {
|
|
182
|
-
margin-bottom:
|
|
276
|
+
margin-bottom: 28px;
|
|
183
277
|
}
|
|
184
278
|
|
|
185
279
|
.page-header h1 {
|
|
186
|
-
font-size:
|
|
280
|
+
font-size: 24px;
|
|
187
281
|
font-weight: 700;
|
|
188
|
-
letter-spacing: -0.
|
|
282
|
+
letter-spacing: -0.03em;
|
|
283
|
+
background: linear-gradient(135deg, #f8fafc 0%, #93c5fd 100%);
|
|
284
|
+
-webkit-background-clip: text;
|
|
285
|
+
-webkit-text-fill-color: transparent;
|
|
286
|
+
background-clip: text;
|
|
189
287
|
}
|
|
190
288
|
|
|
191
289
|
.page-header p {
|
|
192
290
|
color: var(--text-secondary);
|
|
193
|
-
font-size:
|
|
194
|
-
margin-top:
|
|
291
|
+
font-size: 13.5px;
|
|
292
|
+
margin-top: 6px;
|
|
293
|
+
max-width: 56ch;
|
|
195
294
|
}
|
|
196
295
|
|
|
197
296
|
/* ─── Cards ──────────────────────────────────────────────────────────────────── */
|
|
198
297
|
|
|
199
298
|
.card {
|
|
200
|
-
background:
|
|
299
|
+
background: linear-gradient(165deg, rgba(23, 32, 51, 0.9), rgba(12, 18, 32, 0.95));
|
|
201
300
|
border: 1px solid var(--border);
|
|
202
301
|
border-radius: var(--radius-md);
|
|
203
302
|
padding: 20px;
|
|
204
|
-
transition: border-color var(--transition-normal);
|
|
303
|
+
transition: border-color var(--transition-normal), box-shadow var(--transition-normal), transform var(--transition-normal);
|
|
304
|
+
box-shadow: var(--shadow-sm);
|
|
205
305
|
}
|
|
206
306
|
|
|
207
|
-
.card:hover {
|
|
307
|
+
.card:hover {
|
|
308
|
+
border-color: var(--border-hover);
|
|
309
|
+
box-shadow: var(--shadow-md);
|
|
310
|
+
}
|
|
208
311
|
|
|
209
312
|
.card-grid {
|
|
210
313
|
display: grid;
|
|
@@ -218,36 +321,126 @@ code, pre { font-family: var(--font-mono); }
|
|
|
218
321
|
display: inline-flex;
|
|
219
322
|
align-items: center;
|
|
220
323
|
gap: 6px;
|
|
221
|
-
padding:
|
|
222
|
-
border-radius:
|
|
324
|
+
padding: 9px 16px;
|
|
325
|
+
border-radius: 10px;
|
|
223
326
|
font-size: 13px;
|
|
224
|
-
font-weight:
|
|
327
|
+
font-weight: 600;
|
|
225
328
|
transition: all var(--transition-fast);
|
|
329
|
+
letter-spacing: -0.01em;
|
|
226
330
|
}
|
|
227
331
|
|
|
228
332
|
.btn-primary {
|
|
229
|
-
background:
|
|
333
|
+
background: linear-gradient(135deg, #3b82f6 0%, #2563eb 55%, #1d4ed8 100%);
|
|
230
334
|
color: #fff;
|
|
335
|
+
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.15) inset, 0 8px 20px rgba(37, 99, 235, 0.28);
|
|
231
336
|
}
|
|
232
337
|
|
|
233
338
|
.btn-primary:hover {
|
|
234
|
-
background:
|
|
235
|
-
box-shadow: 0 0
|
|
339
|
+
background: linear-gradient(135deg, #60a5fa 0%, #3b82f6 50%, #2563eb 100%);
|
|
340
|
+
box-shadow: 0 0 28px var(--accent-glow), 0 8px 24px rgba(37, 99, 235, 0.35);
|
|
341
|
+
transform: translateY(-1px);
|
|
236
342
|
}
|
|
237
343
|
|
|
238
344
|
.btn-ghost {
|
|
239
|
-
background:
|
|
345
|
+
background: rgba(148, 163, 184, 0.06);
|
|
240
346
|
color: var(--text-secondary);
|
|
241
347
|
border: 1px solid var(--border);
|
|
242
348
|
}
|
|
243
349
|
|
|
244
350
|
.btn-ghost:hover {
|
|
245
|
-
background:
|
|
351
|
+
background: rgba(148, 163, 184, 0.12);
|
|
246
352
|
color: var(--text-primary);
|
|
247
353
|
border-color: var(--border-hover);
|
|
248
354
|
}
|
|
249
355
|
|
|
250
|
-
.btn-sm { padding:
|
|
356
|
+
.btn-sm { padding: 6px 11px; font-size: 12px; }
|
|
357
|
+
|
|
358
|
+
/* Premium surfaces */
|
|
359
|
+
.surface-premium {
|
|
360
|
+
background: linear-gradient(165deg, rgba(23, 32, 51, 0.92), rgba(12, 18, 32, 0.96));
|
|
361
|
+
border: 1px solid var(--glass-border);
|
|
362
|
+
border-radius: var(--radius-lg);
|
|
363
|
+
box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.login-shell {
|
|
367
|
+
min-height: 100vh;
|
|
368
|
+
display: flex;
|
|
369
|
+
align-items: center;
|
|
370
|
+
justify-content: center;
|
|
371
|
+
padding: 24px;
|
|
372
|
+
position: relative;
|
|
373
|
+
overflow: hidden;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.login-shell::before {
|
|
377
|
+
content: '';
|
|
378
|
+
position: absolute;
|
|
379
|
+
inset: -20%;
|
|
380
|
+
background:
|
|
381
|
+
radial-gradient(ellipse 50% 40% at 20% 20%, rgba(37, 99, 235, 0.28), transparent 55%),
|
|
382
|
+
radial-gradient(ellipse 45% 35% at 80% 70%, rgba(30, 58, 138, 0.35), transparent 50%),
|
|
383
|
+
radial-gradient(ellipse 30% 25% at 50% 50%, rgba(96, 165, 250, 0.08), transparent 60%);
|
|
384
|
+
animation: meshDrift 18s ease-in-out infinite alternate;
|
|
385
|
+
pointer-events: none;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
@keyframes meshDrift {
|
|
389
|
+
from { transform: translate3d(0, 0, 0) scale(1); }
|
|
390
|
+
to { transform: translate3d(-2%, 2%, 0) scale(1.05); }
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.login-card {
|
|
394
|
+
width: min(400px, 100%);
|
|
395
|
+
position: relative;
|
|
396
|
+
z-index: 1;
|
|
397
|
+
padding: 40px 36px;
|
|
398
|
+
border-radius: var(--radius-xl);
|
|
399
|
+
background: linear-gradient(165deg, rgba(18, 26, 43, 0.92), rgba(8, 12, 22, 0.96));
|
|
400
|
+
border: 1px solid rgba(148, 163, 184, 0.14);
|
|
401
|
+
box-shadow:
|
|
402
|
+
0 0 0 1px rgba(59, 130, 246, 0.08),
|
|
403
|
+
0 32px 80px rgba(0, 0, 0, 0.55),
|
|
404
|
+
0 0 80px rgba(37, 99, 235, 0.12);
|
|
405
|
+
backdrop-filter: blur(24px);
|
|
406
|
+
display: flex;
|
|
407
|
+
flex-direction: column;
|
|
408
|
+
gap: 28px;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.onboarding-shell {
|
|
412
|
+
max-width: 680px;
|
|
413
|
+
margin: 0 auto;
|
|
414
|
+
padding: 36px 22px 72px;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.onboarding-progress {
|
|
418
|
+
height: 6px;
|
|
419
|
+
background: rgba(148, 163, 184, 0.1);
|
|
420
|
+
border-radius: 99px;
|
|
421
|
+
overflow: hidden;
|
|
422
|
+
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
.onboarding-progress > div {
|
|
426
|
+
height: 100%;
|
|
427
|
+
background: linear-gradient(90deg, #1e40af, #3b82f6, #93c5fd);
|
|
428
|
+
border-radius: 99px;
|
|
429
|
+
box-shadow: 0 0 16px rgba(59, 130, 246, 0.5);
|
|
430
|
+
transition: width 0.3s cubic-bezier(0.23, 1, 0.32, 1);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
.loop-card {
|
|
434
|
+
background: linear-gradient(145deg, rgba(30, 58, 138, 0.25), rgba(12, 18, 32, 0.8));
|
|
435
|
+
border: 1px solid var(--border-accent);
|
|
436
|
+
border-radius: var(--radius-md);
|
|
437
|
+
padding: 18px 20px;
|
|
438
|
+
font-family: var(--font-mono);
|
|
439
|
+
font-size: 12.5px;
|
|
440
|
+
line-height: 1.85;
|
|
441
|
+
color: #cbd5e1;
|
|
442
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
443
|
+
}
|
|
251
444
|
|
|
252
445
|
/* ─── Status Badges ──────────────────────────────────────────────────────────── */
|
|
253
446
|
|
|
@@ -319,16 +512,18 @@ code, pre { font-family: var(--font-mono); }
|
|
|
319
512
|
|
|
320
513
|
.message-user {
|
|
321
514
|
align-self: flex-end;
|
|
322
|
-
background:
|
|
515
|
+
background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
|
|
323
516
|
color: #fff;
|
|
324
517
|
border-bottom-right-radius: 4px;
|
|
518
|
+
box-shadow: 0 8px 24px rgba(37, 99, 235, 0.22);
|
|
325
519
|
}
|
|
326
520
|
|
|
327
521
|
.message-assistant {
|
|
328
522
|
align-self: flex-start;
|
|
329
|
-
background:
|
|
523
|
+
background: linear-gradient(165deg, rgba(23, 32, 51, 0.95), rgba(12, 18, 32, 0.98));
|
|
330
524
|
border: 1px solid var(--border);
|
|
331
525
|
border-bottom-left-radius: 4px;
|
|
526
|
+
box-shadow: var(--shadow-sm);
|
|
332
527
|
}
|
|
333
528
|
|
|
334
529
|
.message-assistant code {
|
|
@@ -380,18 +575,20 @@ code, pre { font-family: var(--font-mono); }
|
|
|
380
575
|
width: 44px;
|
|
381
576
|
height: 44px;
|
|
382
577
|
border-radius: var(--radius-md);
|
|
383
|
-
background:
|
|
578
|
+
background: linear-gradient(135deg, #3b82f6, #1d4ed8);
|
|
384
579
|
color: #fff;
|
|
385
580
|
display: flex;
|
|
386
581
|
align-items: center;
|
|
387
582
|
justify-content: center;
|
|
388
583
|
flex-shrink: 0;
|
|
389
584
|
transition: all var(--transition-fast);
|
|
585
|
+
box-shadow: 0 4px 14px rgba(37, 99, 235, 0.35);
|
|
390
586
|
}
|
|
391
587
|
|
|
392
588
|
.chat-send-btn:hover {
|
|
393
|
-
background:
|
|
394
|
-
box-shadow: 0 0
|
|
589
|
+
background: linear-gradient(135deg, #60a5fa, #2563eb);
|
|
590
|
+
box-shadow: 0 0 24px var(--accent-glow);
|
|
591
|
+
transform: translateY(-1px);
|
|
395
592
|
}
|
|
396
593
|
|
|
397
594
|
.chat-send-btn:disabled {
|
|
@@ -1441,12 +1638,14 @@ code, pre { font-family: var(--font-mono); }
|
|
|
1441
1638
|
align-items: center;
|
|
1442
1639
|
justify-content: space-between;
|
|
1443
1640
|
padding: 12px 24px;
|
|
1444
|
-
background: rgba(18, 18, 26, 0.
|
|
1641
|
+
background: rgba(18, 18, 26, 0.92);
|
|
1445
1642
|
backdrop-filter: blur(16px);
|
|
1446
1643
|
-webkit-backdrop-filter: blur(16px);
|
|
1447
1644
|
border-bottom: 1px solid var(--border);
|
|
1448
|
-
z-index:
|
|
1645
|
+
z-index: 40;
|
|
1449
1646
|
flex-shrink: 0;
|
|
1647
|
+
overflow: visible;
|
|
1648
|
+
position: relative;
|
|
1450
1649
|
}
|
|
1451
1650
|
|
|
1452
1651
|
.chat-header-title {
|
|
@@ -1510,18 +1709,19 @@ code, pre { font-family: var(--font-mono); }
|
|
|
1510
1709
|
top: 100%;
|
|
1511
1710
|
right: 0;
|
|
1512
1711
|
margin-top: 6px;
|
|
1513
|
-
width:
|
|
1514
|
-
background: rgba(18, 18, 26, 0.
|
|
1712
|
+
width: 240px;
|
|
1713
|
+
background: rgba(18, 18, 26, 0.98);
|
|
1515
1714
|
backdrop-filter: blur(20px);
|
|
1516
1715
|
-webkit-backdrop-filter: blur(20px);
|
|
1517
1716
|
border: 1px solid var(--border);
|
|
1518
1717
|
border-radius: var(--radius-md);
|
|
1519
|
-
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.
|
|
1718
|
+
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.55);
|
|
1520
1719
|
padding: 6px;
|
|
1521
1720
|
display: flex;
|
|
1522
1721
|
flex-direction: column;
|
|
1523
1722
|
gap: 2px;
|
|
1524
|
-
z-index:
|
|
1723
|
+
z-index: 200;
|
|
1724
|
+
pointer-events: auto;
|
|
1525
1725
|
animation: popoverIn 0.15s ease-out;
|
|
1526
1726
|
}
|
|
1527
1727
|
|