@mneme-ai/xray 2.160.0 โ†’ 2.162.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mneme-ai/xray",
3
- "version": "2.160.0",
3
+ "version": "2.162.0",
4
4
  "description": "Mneme Repo X-Ray โ€” a signed, raw-free, deterministic X-Ray of any repo. Every number is reproducible from git/AST/metadata and sealed with an offline-verifiable NOTARY receipt. No source code ever leaves the machine; no LLM guesses anything.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/public/index.html CHANGED
@@ -125,6 +125,7 @@
125
125
  .bitem .arr{color:#c2c6cd}
126
126
  .bitem.muted{cursor:default;color:var(--sub)}.bitem.muted:hover{background:none}
127
127
  .lock{margin-right:4px}
128
+ .boardnote{font-size:12.5px;color:var(--sub);margin:0 0 14px;line-height:1.5}.boardnote b{color:var(--ink2);font-weight:600}
128
129
  .signincta{border:1px dashed var(--line);border-radius:var(--r);padding:28px;text-align:center;color:var(--sub);font-size:14px;line-height:1.7;background:var(--soft)}
129
130
  .signincta b{color:var(--ink)}
130
131
  .listfoot{display:flex;justify-content:space-between;align-items:center;padding:14px 4px 0;font-size:13px}
@@ -287,6 +288,7 @@
287
288
 
288
289
  <div class="board">
289
290
  <div class="tabs"><button id="tabBoard" class="tab on">Recently X-rayed</button><button id="tabMine" class="tab" style="display:none">My repos</button></div>
291
+ <p class="boardnote" id="boardnote">๐ŸŒ <b>Public</b> โ€” recent X-Rays of <b>public</b> repos, visible to everyone. Private repos never appear here.</p>
290
292
  <div id="board"></div>
291
293
  </div>
292
294
  </div>
@@ -408,8 +410,14 @@ async function openReport(fp, isPrivate){
408
410
  if(signed&&signed.report){ render(signed); window.scrollTo({top:0,behavior:"smooth"}); }
409
411
  }catch{}
410
412
  }
411
- document.getElementById("tabBoard").addEventListener("click",e=>{tab="board";setTab(e.target);loadList();});
412
- document.getElementById("tabMine").addEventListener("click",e=>{tab="mine";setTab(e.target);loadList();});
413
+ function updateBoardNote(){
414
+ const n=document.getElementById("boardnote"); if(!n) return;
415
+ n.innerHTML = tab==="mine"
416
+ ? "๐Ÿ”’ <b>Private to you</b> โ€” only someone with your key sees these. Includes your private/local repos."
417
+ : "๐ŸŒ <b>Public</b> โ€” recent X-Rays of <b>public</b> repos, visible to everyone. Private repos never appear here.";
418
+ }
419
+ document.getElementById("tabBoard").addEventListener("click",e=>{tab="board";setTab(e.target);updateBoardNote();loadList();});
420
+ document.getElementById("tabMine").addEventListener("click",e=>{tab="mine";setTab(e.target);updateBoardNote();loadList();});
413
421
  function setTab(t){document.querySelectorAll(".tab").forEach(x=>x.classList.remove("on"));t.classList.add("on");}
414
422
 
415
423
  document.getElementById("f").addEventListener("submit", async e=>{
@@ -524,7 +532,7 @@ document.getElementById("localpack").addEventListener("click", async ()=>{
524
532
  }catch(ex){ err.textContent="Could not reach the local agent. Run: npx @mneme-ai/xray bridge"; err.style.display="block"; }
525
533
  finally{ btn.disabled=false; btn.textContent="๐Ÿ“ฆ Pack"; }
526
534
  });
527
- document.getElementById("copyr").textContent = "ยฉ " + new Date().getFullYear() + " Mneme ยท MIT";
535
+ document.getElementById("copyr").textContent = "ยฉ " + new Date().getFullYear() + " Mneme";
528
536
  detectBridge();
529
537
  refreshKeyState();
530
538
  loadList();
@@ -7,43 +7,47 @@
7
7
  <link rel="icon" href="/favicon.svg" />
8
8
  <!--OGMETA-->
9
9
  <style>
10
- :root{--ink:#0a0a0a;--sub:#6b7280;--line:#ececec;--soft:#fafafa;--green:#16a34a;--amber:#d97706;--red:#dc2626}
10
+ :root{--ink:#0b0b0f;--ink2:#33333b;--sub:#8b8f98;--line:#ececef;--line2:#f3f3f5;--soft:#fafafb;
11
+ --a:#5b5bf6;--green:#16a34a;--amber:#d97706;--red:#e11d48;--r:18px;
12
+ --sh:0 1px 2px rgba(11,11,20,.04),0 14px 44px -12px rgba(11,11,20,.10)}
11
13
  *{box-sizing:border-box}
12
- body{margin:0;background:#fff;color:var(--ink);font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;-webkit-font-smoothing:antialiased}
13
- .wrap{max-width:760px;margin:0 auto;padding:46px 22px 70px}
14
- .nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}
15
- .mark{font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--sub)}
16
- .home{font-size:13px;color:var(--ink);text-decoration:none;border:1px solid var(--line);border-radius:9px;padding:8px 13px}
17
- .card{border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,.03),0 8px 30px rgba(0,0,0,.04)}
18
- .card .top{display:flex;align-items:center;gap:20px;padding:26px 28px;border-bottom:1px solid var(--line)}
19
- .grade{width:78px;height:78px;border-radius:18px;display:grid;place-items:center;font-size:40px;font-weight:720;color:#fff;flex:none}
20
- .g-A{background:var(--green)}.g-B{background:#65a30d}.g-C{background:var(--amber)}.g-D{background:#ea580c}.g-F{background:var(--red)}
21
- .top .repo{font-size:21px;font-weight:620;word-break:break-all}.top .head{color:var(--sub);font-size:14.5px;margin-top:2px}
22
- .trustbar{display:flex;align-items:center;gap:14px;padding:13px 28px;background:#f0fdf4;border-bottom:1px solid #dcfce7;flex-wrap:wrap}
14
+ body{margin:0;background:#fff;color:var(--ink2);font:16px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,"Helvetica Neue",Roboto,sans-serif;-webkit-font-smoothing:antialiased;letter-spacing:-.011em}
15
+ .wrap{max-width:720px;margin:0 auto;padding:46px 24px 70px}
16
+ .nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}
17
+ .mark{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--sub);font-weight:600}
18
+ .home{font-size:13px;color:var(--ink);text-decoration:none;border:1px solid var(--line);border-radius:10px;padding:9px 14px;font-weight:540;transition:border-color .15s}
19
+ .home:hover{border-color:var(--ink)}
20
+ .card{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff;box-shadow:var(--sh)}
21
+ .card .top{display:flex;align-items:center;gap:22px;padding:28px 30px;border-bottom:1px solid var(--line2);background:linear-gradient(180deg,#fff,#fcfcfd)}
22
+ .grade{width:72px;height:72px;border-radius:16px;display:grid;place-items:center;font-size:36px;font-weight:740;color:#fff;flex:none;box-shadow:inset 0 -2px 6px rgba(0,0,0,.12)}
23
+ .g-A{background:linear-gradient(135deg,#1fb255,#15863f)}.g-B{background:linear-gradient(135deg,#7bb736,#5c8f1e)}
24
+ .g-C{background:linear-gradient(135deg,#eaa83a,#c9821a)}.g-D{background:linear-gradient(135deg,#f0742e,#d4571a)}.g-F{background:linear-gradient(135deg,#f43f5e,#be123c)}
25
+ .top .repo{font-size:22px;font-weight:640;letter-spacing:-.02em;color:var(--ink);word-break:break-all;line-height:1.2}.top .head{color:var(--sub);font-size:14px;margin-top:4px}
26
+ .trustbar{display:flex;align-items:center;gap:14px;padding:13px 30px;background:#f0fdf4;border-bottom:1px solid #dcfce7;flex-wrap:wrap}
23
27
  .hgauge{display:inline-flex;align-items:center;gap:8px;font-weight:680;color:#15803d;font-size:14px}
24
28
  .hdot{width:10px;height:10px;border-radius:50%;background:#16a34a;box-shadow:0 0 0 4px rgba(22,163,74,.16)}
25
29
  .htext{font-size:12.5px;color:#3f6b4e;line-height:1.5}.htext b{color:#14532d;font-weight:640}
26
- .rows{padding:8px 28px 14px}
27
- .row{display:flex;gap:14px;padding:15px 0;border-bottom:1px solid var(--soft);align-items:baseline}.row:last-child{border-bottom:0}
28
- .row .k{font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--sub);width:140px;flex:none;display:flex;flex-direction:column;gap:3px}
29
- .kdesc{font-size:11px;color:var(--sub);text-transform:none;letter-spacing:0;line-height:1.3}
30
- .spark{font-family:ui-monospace,Menlo,monospace;letter-spacing:1px;color:#4f46e5}
30
+ .rows{padding:6px 30px 16px}
31
+ .row{display:flex;gap:18px;padding:17px 0;border-bottom:1px solid var(--line2);align-items:baseline}.row:last-child{border-bottom:0}
32
+ .row .k{width:138px;flex:none;display:flex;flex-direction:column;gap:4px;font-size:12.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink);font-weight:700}
33
+ .kdesc{font-size:11.5px;color:#5e636d;text-transform:none;letter-spacing:0;font-weight:400;line-height:1.4}
34
+ .spark{font-family:ui-monospace,Menlo,monospace;letter-spacing:1px;color:var(--a)}
31
35
  .muted{color:var(--sub)}
32
- @media (max-width:640px){ .row{flex-direction:column;gap:4px} .row .k{width:auto} }
33
- .row .v{font-size:15.5px}.row .v .big{font-weight:640}
34
- .chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
35
- .chip{font-size:12.5px;padding:3px 9px;border-radius:999px;background:var(--soft);border:1px solid var(--line);color:#374151}
36
- .chip.bad{background:#fef2f2;border-color:#fee2e2;color:var(--red)}.chip.warn{background:#fffbeb;border-color:#fef3c7;color:var(--amber)}
37
- .foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 28px;background:var(--soft);font-size:13px;color:var(--sub);flex-wrap:wrap}
36
+ .row .v{font-size:15px;color:var(--ink2)}.row .v .big{font-weight:660;color:var(--ink);font-size:16px}
37
+ .chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
38
+ .chip{font-size:12px;padding:4px 10px;border-radius:8px;background:var(--soft);border:1px solid var(--line);color:#5c616b}
39
+ .chip.bad{background:#fff1f3;border-color:#ffe0e6;color:var(--red)}.chip.warn{background:#fff8ed;border-color:#fde6cc;color:#b45309}
40
+ .foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 30px;background:var(--soft);font-size:13px;color:var(--sub);flex-wrap:wrap}
38
41
  .verified{display:inline-flex;align-items:center;gap:7px;color:var(--green);font-weight:560}
39
- .dot{width:8px;height:8px;border-radius:50%;background:var(--green)}
40
- code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px}
41
- .share{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:16px 28px;border-top:1px solid var(--line)}
42
+ .dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(22,163,74,.14)}
43
+ code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;background:var(--soft);padding:2px 6px;border-radius:6px;border:1px solid var(--line)}
44
+ .share{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:18px 30px;border-top:1px solid var(--line2)}
42
45
  .badgeimg{height:20px}
43
- .sbtn{padding:8px 13px;border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:9px;font-size:13px;cursor:pointer;text-decoration:none}
46
+ .sbtn{height:38px;display:inline-flex;align-items:center;padding:0 15px;border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:10px;font-size:13px;font-weight:540;cursor:pointer;text-decoration:none}
44
47
  .sbtn.ghost{background:#fff;color:var(--ink)}
45
48
  .miss{color:var(--sub);text-align:center;padding:60px 0}
46
- .vbadge{margin-top:16px;font-size:13px;color:var(--sub);text-align:center}
49
+ .vbadge{margin-top:16px;font-size:13px;color:var(--green);text-align:center;font-weight:560}
50
+ @media (max-width:640px){.wrap{padding:32px 18px 60px}.card .top{gap:16px;padding:20px}.grade{width:58px;height:58px;font-size:27px}.rows{padding:2px 18px 10px}.row{flex-direction:column;gap:5px;padding:14px 0}.row .k{width:auto;flex-direction:row;align-items:baseline;gap:8px}.kdesc{display:none}.foot,.share,.trustbar{padding-left:18px;padding-right:18px}.sbtn{flex:1;justify-content:center}}
47
51
  </style>
48
52
  </head>
49
53
  <body>