From 965b1c912fd6d1ce6599a54d2291be0132b27ff9 Mon Sep 17 00:00:00 2001 From: hailneed Date: Fri, 18 Sep 2026 16:16:38 +0300 Subject: [PATCH 1/2] feat(ui): add clear first-run project-to-preserve flow --- src-node/dashboard.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src-node/dashboard.js b/src-node/dashboard.js index 8746ab0..35b60e9 100644 --- a/src-node/dashboard.js +++ b/src-node/dashboard.js @@ -139,16 +139,18 @@ export function renderDashboard({ items, analysis, sessions = [], sessionAnalysi const activityBars = activitySource.map((s) => ``).join(''); return `AgentMemora // Memory Intelligence
AgentMemoraMEMORY & CONTEXT CONTROL PLANE
Local · Read-only
INDEX LOCAL-01SCOPE AGENT MEMORYMODE PASSIVE INSPECTIONWRITE GUARD ENFORCED● SOURCE GRAPH ONLINE
+:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#dbe7ef;background:#050a0e;--bg:#050a0e;--card:#091219;--card2:#0b171f;--soft:#0d1b24;--line:#1b303b;--line2:#244653;--ink:#dbe7ef;--muted:#718895;--cyan:#56e0d4;--blue:#6b93ff;--green:#67d99f;--amber:#efbd68;--red:#ff6b7a;--purple:#9c83ff;--shadow:0 18px 55px rgba(0,0,0,.32);--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 72% -10%,rgba(60,118,144,.12),transparent 30%),linear-gradient(180deg,#071016 0,#050a0e 48%,#060c11 100%);font-size:13px;min-height:100vh}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:linear-gradient(rgba(91,145,164,.028) 1px,transparent 1px),linear-gradient(90deg,rgba(91,145,164,.028) 1px,transparent 1px);background-size:32px 32px;mask-image:linear-gradient(to bottom,#000 0,transparent 88%)}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:30;opacity:.025;background:repeating-linear-gradient(0deg,#fff 0 1px,transparent 1px 4px)}.topnav{height:66px;position:sticky;top:0;z-index:20;background:rgba(5,11,15,.94);backdrop-filter:blur(18px);border-bottom:1px solid var(--line2);display:flex;align-items:center;gap:24px;padding:0 28px;box-shadow:0 8px 30px rgba(0,0,0,.2)}.brand{display:flex;align-items:center;gap:11px;min-width:max-content}.brand-mark{width:31px;height:31px;border:1px solid #3d7280;background:#07151c;box-shadow:inset 0 0 18px rgba(86,224,212,.07),0 0 20px rgba(86,224,212,.05);position:relative;clip-path:polygon(16% 0,84% 0,100% 16%,100% 84%,84% 100%,16% 100%,0 84%,0 16%)}.brand-mark:before,.brand-mark:after{content:"";position:absolute;background:var(--cyan)}.brand-mark:before{width:13px;height:1px;left:8px;top:15px;box-shadow:0 -5px 0 rgba(86,224,212,.45),0 5px 0 rgba(86,224,212,.45)}.brand-mark:after{width:1px;height:13px;left:14px;top:9px}.brand b{font:800 17px var(--mono);letter-spacing:-.04em;color:#e7f1f6}.brand small{display:block;font:8px var(--mono);letter-spacing:.13em;color:#607c88;margin-top:2px}.navlinks{display:flex;align-items:center;gap:3px}.navlinks a{color:#718895;text-decoration:none;padding:9px 10px;border:1px solid transparent;font:700 10px var(--mono);letter-spacing:.03em;text-transform:uppercase}.navlinks a:hover,.navlinks a.active{color:var(--cyan);border-color:#1d3c46;background:#0a171e}.nav-search{margin-left:auto;position:relative;min-width:300px}.nav-search input{width:100%;border:1px solid #1b3741;background:#071117;padding:9px 38px 9px 34px;color:#d7e7ed;outline:none;font:10px var(--mono)}.nav-search input:focus{border-color:#3d7882;box-shadow:0 0 0 2px rgba(86,224,212,.05)}.nav-search:before{content:">_";position:absolute;left:11px;top:9px;color:var(--cyan);font:10px var(--mono)}.kbd{position:absolute;right:8px;top:7px;border:1px solid #25414b;background:#0a161d;color:#78929c;padding:2px 5px;font:9px var(--mono)}.local-pill{display:flex;align-items:center;gap:7px;white-space:nowrap;color:#84a0aa;font:700 9px var(--mono);letter-spacing:.05em}.dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 10px rgba(103,217,159,.7)}.intel-strip{position:relative;z-index:10;height:29px;display:flex;align-items:center;gap:22px;padding:0 28px;border-bottom:1px solid #142933;background:#061017;color:#5f7b86;font:8px var(--mono);letter-spacing:.08em;text-transform:uppercase}.intel-strip b{color:#a7c1c9;font-weight:700}.intel-strip .ok{color:var(--green)}.intel-strip .warn{color:var(--amber)}.intel-strip .spacer{flex:1}.main{position:relative;z-index:1;max-width:1540px;margin:auto;padding:16px 28px 34px}.hero{min-height:218px;border:1px solid #20404b;overflow:hidden;display:grid;grid-template-columns:1.18fr .82fr;background:linear-gradient(110deg,rgba(8,23,31,.98),rgba(7,17,23,.97) 52%,rgba(8,26,34,.96));box-shadow:var(--shadow);position:relative}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 49.8%,rgba(86,224,212,.035) 50%,transparent 50.2%),linear-gradient(transparent 49.8%,rgba(86,224,212,.025) 50%,transparent 50.2%);background-size:96px 96px}.hero:after{content:"AGENTMEMORA // MEMORY INTELLIGENCE";position:absolute;right:18px;top:14px;color:#34515c;font:8px var(--mono);letter-spacing:.12em}.hero-copy{padding:34px 36px;position:relative;z-index:1}.eyebrow{font:700 9px var(--mono);letter-spacing:.14em;color:#658995}.hero h1{font-size:32px;line-height:1.08;letter-spacing:-.045em;margin:12px 0 10px;max-width:680px;color:#e8f0f4}.hero h1 span{color:var(--cyan);text-shadow:0 0 24px rgba(86,224,212,.13)}.hero p{color:#79909a;font-size:13px;line-height:1.65;margin:0;max-width:650px}.hero-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:21px}.btn{border:1px solid #294852;background:#0a171e;color:#a7bcc5;padding:9px 13px;text-decoration:none;font:700 9px var(--mono);letter-spacing:.04em;text-transform:uppercase}.btn:hover{border-color:#4c7982;color:#e4f2f5}.btn.primary{background:#0b2529;border-color:#2e6c70;color:var(--cyan);box-shadow:inset 0 0 18px rgba(86,224,212,.035)}.hero-visual{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;padding:28px}.context-map{width:min(390px,100%);border:1px solid #2a4c57;background:rgba(4,13,18,.88);padding:17px;box-shadow:inset 0 0 40px rgba(45,102,116,.045),0 16px 40px rgba(0,0,0,.2);position:relative}.context-map:before{content:"LIVE CONTEXT INDEX";position:absolute;top:-9px;left:13px;background:#071218;padding:2px 7px;color:#537783;font:8px var(--mono);letter-spacing:.12em}.context-map .terminal-line{font:10px/1.6 var(--mono);color:#4c7480;margin:3px 0}.context-map .terminal-line:before{content:"› ";color:var(--cyan)}.context-map .terminal-line b{color:#c8d9df;font-weight:600}.context-stats{border-top:1px solid #18313b;margin-top:11px;padding-top:11px;display:grid;grid-template-columns:1fr 1fr;gap:7px}.context-stats div{background:#08151b;border:1px solid #172e37;padding:9px}.context-stats b{display:block;font:700 17px var(--mono);color:#d8e8ed}.context-stats span{font:8px var(--mono);color:#5f7983;text-transform:uppercase;letter-spacing:.08em}.section{margin-top:13px;scroll-margin-top:108px}.start-flow{display:grid;grid-template-columns:auto repeat(3,1fr);gap:0;margin-top:9px;border:1px solid #1b343e;background:#071117;max-width:1180px}.start-label{display:grid;place-items:center;padding:0 14px;border-right:1px solid #1b343e;color:#4f727e;font:700 8px var(--mono);letter-spacing:.12em;writing-mode:vertical-rl;transform:rotate(180deg)}.start-flow a{display:flex;align-items:center;gap:10px;padding:11px 13px;border-right:1px solid #1b343e;color:inherit;text-decoration:none;min-width:0}.start-flow a:last-child{border-right:0}.start-flow a:hover{background:#0a1820}.start-flow a>span{width:27px;height:27px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #28505c;background:#091a21;color:var(--cyan);font:700 8px var(--mono)}.start-flow b,.start-flow small{display:block}.start-flow b{font:700 9px var(--mono);color:#b9cbd2;text-transform:uppercase}.start-flow small{font:7px/1.45 var(--mono);color:#5f7781;margin-top:3px}.section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:8px}.section-head h2{margin:0;font:700 12px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:#c6d7dd}.section-head h2:before{content:"// ";color:#3d6c77}.section-head span{color:#5f7781;font:8px var(--mono)}.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.kpi,.panel{background:linear-gradient(180deg,#0a151c,#081117);border:1px solid #1b323c;box-shadow:0 8px 28px rgba(0,0,0,.16)}.kpi{padding:13px 14px;min-height:104px;position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;left:0;top:0;width:2px;height:100%;background:#274b56}.kpi.green:before{background:var(--green)}.kpi.red:before{background:var(--red)}.kpi.amber:before{background:var(--amber)}.kpi.purple:before{background:var(--purple)}.kpi:after{content:"";position:absolute;right:10px;top:10px;width:22px;height:12px;border-top:1px solid #1f3c46;border-right:1px solid #1f3c46}.kpi-top{display:flex;align-items:center;gap:7px;color:#708894;font:700 8px var(--mono);letter-spacing:.07em;text-transform:uppercase}.kpi-icon{width:23px;height:23px;display:grid;place-items:center;border:1px solid #23424d;background:#0a1a21;color:var(--cyan);font:900 10px var(--mono)}.kpi.purple .kpi-icon{color:var(--purple);border-color:#40365d}.kpi.green .kpi-icon{color:var(--green);border-color:#28503e}.kpi.red .kpi-icon{color:var(--red);border-color:#543039}.kpi.amber .kpi-icon{color:var(--amber);border-color:#59482d}.kpi b.value{display:block;font:800 24px var(--mono);margin:8px 0 1px;color:#e0ebef;letter-spacing:-.04em}.kpi small{color:#5e7580;font:8px var(--mono)}.overview-grid{display:grid;grid-template-columns:.72fr 1.35fr .93fr;gap:8px}.panel{padding:14px;min-width:0}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.panel-title h3{margin:0;font:700 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:#b8cbd2}.panel-title h3:before{content:"[";color:#3d6873}.panel-title h3:after{content:"]";color:#3d6873}.panel-title a,.text-action{font:700 8px var(--mono);color:#5ecbc3;text-decoration:none;border:0;background:none;cursor:pointer;text-transform:uppercase}.donut-wrap{display:flex;align-items:center;gap:18px;min-height:158px}.donut{--p:0%;width:118px;height:118px;border-radius:50%;background:conic-gradient(var(--cyan) 0 var(--p),#132731 var(--p) 100%);position:relative;flex:0 0 auto;box-shadow:0 0 28px rgba(86,224,212,.04)}.donut:after{content:"";position:absolute;inset:17px;border-radius:50%;background:#09141a;border:1px solid #18303a}.donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center;z-index:1}.donut-center b{font:800 22px var(--mono);color:#dcebed}.donut-center span{font:8px var(--mono);color:#607984;text-transform:uppercase}.legend{display:grid;gap:9px;flex:1}.legend-row{display:grid;grid-template-columns:8px 1fr auto;gap:8px;align-items:center;font:9px var(--mono);color:#718994}.legend-row i{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 8px currentColor}.legend-row:nth-child(2) i{background:var(--blue)}.legend-row:nth-child(3) i{background:var(--amber)}.legend-row b{color:#a8bdc5}.activity-bars{height:158px;display:flex;align-items:end;gap:6px;padding:8px 4px 22px;border-bottom:1px solid #18303a;background:linear-gradient(180deg,#09151b,#071117);position:relative}.activity-bars:before,.activity-bars:after{content:"";position:absolute;left:0;right:0;border-top:1px dashed #16303a}.activity-bars:before{top:42px}.activity-bars:after{top:86px}.activity-bar{flex:1;min-width:8px;max-width:24px;border:1px solid #2d6470;background:linear-gradient(180deg,#4ec9c0,#1c5960);position:relative;z-index:1}.activity-bar.sub{border-color:#574a7f;background:linear-gradient(180deg,#8d76e9,#43396d)}.activity-labels{display:flex;justify-content:space-between;color:#536e79;font:8px var(--mono);margin-top:7px}.bar-row{display:grid;grid-template-columns:105px 1fr 42px;gap:8px;align-items:center;margin:9px 0;font:9px var(--mono);color:#7d939c}.bar{height:5px;background:#13242c;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,#276d73,#56e0d4)}.bar-row>b{text-align:right;color:#91a7af}.table-wrap{overflow:auto}.compact-table{width:100%;border-collapse:collapse}.compact-table th{text-align:left;color:#526e79;font:700 8px var(--mono);text-transform:uppercase;letter-spacing:.08em;padding:7px 8px;border-bottom:1px solid #19323c}.compact-table td{padding:9px 8px;border-bottom:1px solid #132832;font:9px var(--mono);vertical-align:middle;color:#8fa4ad}.compact-table tr:hover td{background:#0a171e}.compact-table tr:last-child td{border-bottom:0}.compact-table td b,.compact-table td small{display:block}.compact-table td b{color:#b7c9d0}.compact-table td small{color:#5c7480;max-width:320px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.type-icon{width:22px;height:22px;display:grid;place-items:center;border:1px solid #284b56;background:#0a1a21;color:var(--cyan)}.workspace-grid{display:grid;grid-template-columns:.88fr 1.25fr .87fr;gap:8px;align-items:stretch}.memory-list{padding:0;overflow:hidden}.memory-tabs{display:flex;gap:5px;padding:11px 11px 7px;flex-wrap:wrap}.chip{border:1px solid #1d3741;background:#08151b;color:#627c87;padding:5px 8px;font:8px var(--mono);text-transform:uppercase}.chip.active{background:#0b2428;color:var(--cyan);border-color:#2b5f64}.memory-file-row{width:100%;border:0;border-top:1px solid #142a33;background:#081218;display:grid;grid-template-columns:28px minmax(0,1fr) 80px 58px;gap:8px;align-items:center;text-align:left;padding:10px 11px;color:#9db1b9;cursor:pointer}.memory-file-row:hover,.memory-file-row.active{background:#0b1b22}.memory-file-row.active{box-shadow:inset 2px 0 0 var(--cyan)}.memory-file-icon{width:24px;height:24px;border:1px solid #285245;background:#0a1c19;color:var(--green);display:grid;place-items:center}.memory-file-copy{min-width:0}.memory-file-copy b,.memory-file-copy small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.memory-file-copy b{font:700 9px var(--mono);color:#b6c9d0}.memory-file-copy small{color:#58717b;font:8px var(--mono);margin-top:2px}.memory-provider,.memory-size{font:8px var(--mono);color:#617985}.memory-preview{display:flex;flex-direction:column;min-height:430px;box-shadow:inset 0 0 50px rgba(35,92,104,.025)}.preview-meta{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:1px solid #17303a}.preview-icon{width:31px;height:31px;border:1px solid #2a594a;background:#0a1d1a;color:var(--green);display:grid;place-items:center}.preview-meta b,.preview-meta small{display:block}.preview-meta b{font:700 10px var(--mono);color:#c5d5da}.preview-meta small{color:#5c7680;font:8px var(--mono);margin-top:2px}.preview-meta .spacer{flex:1}.pill{font:700 7px var(--mono);letter-spacing:.06em;border:1px solid #28414b;background:#0a161d;color:#6f8993;padding:4px 7px;text-transform:uppercase}.pill.purple{background:#151329;border-color:#3c345c;color:#9c83ff}.preview-tabs{display:flex;gap:15px;border-bottom:1px solid #172f39}.preview-tabs span{font:8px var(--mono);padding:9px 1px;color:#5c7580;text-transform:uppercase}.preview-tabs span.active{color:var(--cyan);border-bottom:1px solid var(--cyan)}.memory-code{margin:0;flex:1;max-height:340px;overflow:auto;background:#050d12;border:1px solid #162d36;padding:13px;font:9px/1.65 var(--mono);color:#9db4bc;white-space:pre-wrap;box-shadow:inset 0 0 30px rgba(0,0,0,.25)}.subagent-list{display:grid;gap:7px;max-height:430px;overflow:auto}.subagent-card{border:1px solid #1b333d;background:#08141a;padding:10px}.subagent-head{display:flex;align-items:center;gap:8px}.subagent-icon{width:26px;height:26px;border:1px solid #493f6d;background:#141126;color:var(--purple);display:grid;place-items:center;font:900 10px var(--mono)}.subagent-head>div{flex:1;min-width:0}.subagent-head b,.subagent-head small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subagent-head b{font:700 9px var(--mono);color:#b7c9d0}.subagent-head small{color:#5d7480;font:8px var(--mono);margin-top:2px}.conversation-lines{margin-top:8px;border-top:1px solid #162c35}.conversation-line{display:grid;grid-template-columns:62px 1fr;gap:8px;padding:8px 0;border-bottom:1px solid #132832}.conversation-line:last-child{border-bottom:0}.conversation-line span{font:7px var(--mono);color:#9c83ff}.conversation-line p{margin:0;color:#78909a;font:8px/1.5 var(--mono)}.intel-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.intel-row{display:flex;align-items:flex-start;gap:9px;padding:9px 0;border-top:1px solid #142a33}.intel-row:first-child{border-top:0}.signal{width:23px;height:23px;display:grid;place-items:center;border:1px solid #5a492d;background:#181309;color:var(--amber);font:900 9px var(--mono);flex:0 0 auto}.conflict .signal{background:#1b0d11;color:var(--red);border-color:#5a2e36}.intel-copy{flex:1;min-width:0}.intel-copy b{display:block;font:700 9px/1.45 var(--mono);color:#aebfc6}.intel-copy small{display:block;color:#5f7781;font:8px/1.45 var(--mono);margin-top:3px}.intel-row button{border:1px solid #27424c;background:#09161c;color:#78919a;padding:5px 7px;font:7px var(--mono);cursor:pointer}.source-row{display:grid;grid-template-columns:minmax(260px,1fr) auto auto auto auto;align-items:center;gap:8px;padding:9px 0;border-top:1px solid #142a33}.source-main{display:flex;align-items:center;gap:8px;min-width:0}.source-main b,.source-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-main b{font:700 9px var(--mono);color:#aec0c7}.source-main small{color:#5d7580;font:8px var(--mono)}.source-icon{color:var(--green)}.tag,.survive{font:7px var(--mono);padding:4px 6px;border:1px solid #263f49;background:#09161c;color:#667f89;text-transform:uppercase}.survive.yes{color:var(--green);border-color:#28523e;background:#091913}.survive.warn{color:var(--amber);border-color:#55462e;background:#171309}.source-row details{grid-column:1/-1}.source-row pre{max-height:280px;overflow:auto;white-space:pre-wrap;color:#8ba2ab;background:#050d12;padding:11px;border:1px solid #152c35;font:9px/1.6 var(--mono)}.project-intro{max-width:1180px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid #1b343e;background:#08141a;margin-bottom:8px}.project-intro b,.project-intro span{display:block}.project-intro b{font:700 10px var(--mono);color:#c5d6dc}.project-intro>div>span{margin-top:3px;color:#657e88;font:8px/1.5 var(--mono)}.project-toolbar{max-width:1180px}.project-overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:8px;max-width:1180px;margin-bottom:10px}.project-card{min-height:158px;padding:13px;border:1px solid #1b343e;background:linear-gradient(180deg,#0a151c,#081117);color:inherit;text-decoration:none;display:flex;flex-direction:column;min-width:0}.project-card:hover{border-color:#315864;background:#0a1820}.project-card-top{display:flex;align-items:center;justify-content:space-between}.project-icon{width:28px;height:28px;display:grid;place-items:center;border:1px solid #28505c;background:#091a21;color:var(--cyan);font:800 10px var(--mono);flex:0 0 auto}.project-card h3{margin:10px 0 3px;font:700 11px var(--mono);color:#c5d6dc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-path{font:8px var(--mono);color:#5d7680;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:11px}.project-metrics div{border:1px solid #17303a;background:#071218;padding:6px}.project-metrics b,.project-metrics span{display:block}.project-metrics b{font:700 12px var(--mono);color:#bcd0d6}.project-metrics span{margin-top:2px;font:7px var(--mono);color:#58717b;text-transform:uppercase}.project-open{margin-top:auto;padding-top:10px;color:var(--cyan);font:700 8px var(--mono);text-transform:uppercase}.project-browser{display:grid;gap:8px;max-width:1180px}.project-group{border:1px solid #1b343e;background:#071117;scroll-margin-top:110px}.project-group>summary{margin:0;list-style:none}.project-group>summary::-webkit-details-marker{display:none}.project-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 13px;cursor:pointer}.project-summary:hover{background:#0a1820}.project-summary>div:first-child{display:flex;align-items:center;gap:10px;min-width:0}.project-summary b,.project-summary small{display:block}.project-summary b{font:700 10px var(--mono);color:#bcd0d6}.project-summary small{margin-top:3px;font:8px var(--mono);color:#58717b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:560px}.project-summary-counts{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.project-summary-counts span{border:1px solid #203b45;background:#09161c;padding:5px 7px;color:#657e88;font:7px var(--mono)}.project-summary-counts b{display:inline;color:#b7cbd1}.project-body{border-top:1px solid #17303a;padding:10px}.project-section-head{display:flex;align-items:end;justify-content:space-between;margin:2px 1px 8px}.project-section-head b,.project-section-head small{display:block}.project-section-head b{font:700 9px var(--mono);color:#9fb5bd;text-transform:uppercase}.project-section-head small,.project-section-head>span{margin-top:2px;font:7px var(--mono);color:#58717b}.session-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-items:start}.subagent-group{margin-top:10px;border-top:1px solid #17303a;padding-top:2px}.subagent-group>summary{display:flex;align-items:center;justify-content:space-between;padding:9px 1px;color:#9c83ff}.subagent-group>summary b{font:700 8px var(--mono);color:#7e6bd0}.empty-card{border:1px dashed #1c3741;padding:12px;color:#58717b;font:8px var(--mono)}.session-list{display:grid;gap:7px}.session-row{background:#081219;border:1px solid #1a323c;padding:12px}.session-head{display:flex;gap:10px}.session-icon{width:29px;height:29px;border:1px solid #28505c;background:#091a21;display:grid;place-items:center;color:var(--cyan)}.grow{flex:1;min-width:0}.session-row .eyebrow{font-size:7px}.session-row h3{font:700 10px var(--mono);margin:4px 0;color:#b9cbd2}.session-time{font:7px var(--mono);color:#536d77}.session-facts,.tools,.actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.session-facts span,.tool{font:7px var(--mono);padding:4px 6px;border:1px solid #213b45;background:#09161c;color:#657e88}.session-facts .danger{border-color:#563039;color:var(--red);background:#170d10}.session-facts .ok{border-color:#28513e;color:var(--green);background:#091813}.actions{border-top:1px solid #142b34;padding-top:8px}.actions button{border:1px solid #27424c;background:#09161c;color:#78919a;padding:5px 7px;font:7px var(--mono);cursor:pointer}.actions .primary{border-color:#2d6266;color:var(--cyan);background:#0a2023}.toolbar{margin:8px 0}.toolbar input{width:100%;padding:9px 10px;background:#071117;border:1px solid #1c3741;color:#b7c9d0;outline:none;font:9px var(--mono)}.telemetry-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.path,.muted,small{color:#5f7781}details>summary{cursor:pointer;color:#5f8792;font:8px var(--mono);margin-top:8px;text-transform:uppercase}.transcript{max-height:420px;overflow:auto;margin-top:8px}.event{padding:8px 9px;border-left:2px solid #244652;background:#071218;margin:4px 0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.45;color:#8098a1;font:8px var(--mono)}.event>span{display:block;color:#506b76;font:7px var(--mono);letter-spacing:.1em;margin-bottom:3px}.event.user{border-color:var(--blue)}.event.assistant{border-color:var(--green)}.event.tool{border-color:var(--amber)}.guide-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:9px}.guide{display:flex;align-items:center;gap:9px;padding:10px 11px;border:1px solid #1b343e;background:#08141a;text-decoration:none;color:#7c949d}.guide:hover{border-color:#315764;background:#0a1820}.guide span{width:27px;height:27px;border:1px solid #294c57;background:#091a21;color:var(--cyan);display:grid;place-items:center}.guide b,.guide small{display:block}.guide b{font:700 8px var(--mono);color:#a9bdc4;text-transform:uppercase}.guide small{font:7px var(--mono);color:#59717c;margin-top:2px}.footer{padding:20px 28px;color:#405b66;font:7px var(--mono);letter-spacing:.08em;text-align:center}.toast{position:fixed;right:20px;bottom:20px;background:#0a2023;color:var(--cyan);border:1px solid #2b6267;padding:9px 13px;opacity:0;pointer-events:none;transition:.2s;box-shadow:var(--shadow);font:8px var(--mono);z-index:50}.toast.show{opacity:1}@media(max-width:1180px){.start-flow{grid-template-columns:1fr}.start-label{display:none}.start-flow a{border-right:0;border-bottom:1px solid #1b343e}.start-flow a:last-child{border-bottom:0}.session-grid{grid-template-columns:1fr}.project-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-summary{align-items:flex-start}.project-summary-counts{max-width:42%}.navlinks{display:none}.kpis{grid-template-columns:repeat(3,1fr)}.overview-grid,.workspace-grid{grid-template-columns:1fr}.hero{grid-template-columns:1fr}.hero-visual{display:none}.guide-strip{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.project-overview-grid{grid-template-columns:1fr}.project-intro{align-items:flex-start;flex-direction:column}.project-summary{flex-direction:column}.project-summary-counts{max-width:none;justify-content:flex-start}.project-metrics{grid-template-columns:repeat(2,1fr)}.topnav{padding:0 14px;gap:12px}.intel-strip{padding:0 14px;overflow:hidden}.nav-search{display:none}.main{padding:12px 14px}.kpis{grid-template-columns:repeat(2,1fr)}.overview-grid,.intel-grid,.telemetry-grid{grid-template-columns:1fr}.hero-copy{padding:25px}.hero h1{font-size:27px}.memory-file-row{grid-template-columns:28px minmax(0,1fr)}.memory-provider,.memory-size{display:none}.guide-strip{grid-template-columns:1fr}.local-pill{display:none}} +
AgentMemoraMEMORY & CONTEXT CONTROL PLANE
Local · Read-only
INDEX LOCAL-01SCOPE AGENT MEMORYMODE PASSIVE INSPECTIONWRITE GUARD ENFORCED● SOURCE GRAPH ONLINE
-
OPERATIONAL MEMORY INTELLIGENCE // LOCAL NODE

Know what your agents remember. Detect what they forgot.

Correlate durable memory, session traces, subagent conversations and context-loss signals from one local intelligence surface.

context.scan complete
durable.memory ${num(m.memories)} sources
session.history ${num(t.sessions)} primary
subagent.history ${num(t.subagents)} traces
${coverage}%preserved
${num(m.contextLossRisks)}at risk
${num(t.projects)}projects
${num(m.conflicts)}conflicts
+
OPERATIONAL MEMORY INTELLIGENCE // LOCAL NODE

Know what your agents remember. Detect what they forgot.

Correlate durable memory, session traces, subagent conversations and context-loss signals from one local intelligence surface.

context.scan complete
durable.memory ${num(m.memories)} sources
session.history ${num(t.sessions)} primary
subagent.history ${num(t.subagents)} traces
${coverage}%preserved
${num(m.contextLossRisks)}at risk
${num(t.projects)}projects
${num(m.conflicts)}conflicts
+ +
START HERE
01
Choose a projectSee every indexed session and subagent in one place.
02
Inspect what survivedCompare session context with durable memory and instructions.
03
Preserve useful contextReview risks, then resume, fork or export a Context Capsule.
▤Memory Files
${num(m.memories)}durable memory sources detected
▣Sessions
${num(t.sessions)}primary Claude Code histories
◇Subagents
${num(t.subagents)}subagent transcripts indexed
□Projects
${num(t.projects)}local project contexts mapped
!At Risk
${num(m.contextLossRisks)}session-only context candidates
≠Conflicts
${num(m.conflicts)}potential durable memory conflicts

Context Coverage

Open memory →
${coverage}%preserved
In durable memory${coverage}%
Session only${Math.max(0,100-coverage)}%
At-risk candidates${num(m.contextLossRisks)}

Agent Activity Snapshot

Inspect sessions →
${activityBars}
older contextrecent primary + subagent activity
${tools || 'No tool data'}
-

Recent Context Sessions

View detailed sessions ↓
${recentSessionRows || ''}
Project / ContextPromptsToolsModel
No primary sessions found.
+

Recent Project Activity

Open project explorer ↓
${recentSessionRows || ''}
Project / ContextPromptsToolsModel
No primary sessions found.

Memory Intelligence Workspace

durable sources // provenance // readable context // subagent comms

Memory Files

All sources ↓
All ${num(memoryItems.length)}ClaudeCodexCursorCopilot
${memoryRows || '
No durable memory files found.
'}

Memory Evidence Viewer

SOURCE VERIFIED
▤
${firstMemory ? esc(firstMemory.relativePath) : 'No memory selected'}${firstMemory ? esc(shortPath(firstMemory.path)) : 'Run a scan to discover supported memory sources'}
${firstMemory ? esc(firstMemory.provider) : '—'}
ContentProvenanceRelated SessionsConflicts ${num(m.conflicts)}
${firstMemory ? esc((firstMemory.content || '').slice(0,14000)) : 'No durable memory content available.'}
${subagentConversations || 'No subagent transcripts found.'}
From 9e87cd64f305f603dee07a258993613c16ea1c77 Mon Sep 17 00:00:00 2001 From: hailneed Date: Fri, 18 Sep 2026 16:16:45 +0300 Subject: [PATCH 2/2] test(ui): cover first-run guidance --- test-node/dashboard.test.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test-node/dashboard.test.js b/test-node/dashboard.test.js index 7ce7166..efe61b2 100644 --- a/test-node/dashboard.test.js +++ b/test-node/dashboard.test.js @@ -86,6 +86,9 @@ test('dashboard renders the intelligence terminal memory workspace', () => { assert.match(html, /class="topnav"/); assert.doesNotMatch(html, /class="sidebar"/); assert.match(html, /Know what your agents/); + assert.match(html, /START HERE/); + assert.match(html, /Choose a project/); + assert.match(html, /Preserve useful context/); assert.match(html, /Memory Intelligence Workspace/); assert.match(html, /Memory Evidence Viewer/); assert.match(html, /Subagent Comms/);