Release v0.9.218

Automated sync from private repository.
Built with obfuscation enabled.
This commit is contained in:
GitHub Actions Bot
2026-02-05 08:08:41 +00:00
parent 96e4fe3cd6
commit 7df5126704
62 changed files with 92 additions and 85 deletions
+36 -29
View File
@@ -114,7 +114,7 @@ Six color schemes and a built-in terminal for direct repeater interaction.
- **Live packet metrics** — Received, forwarded, dropped packets with sparkline charts
- **TX Delay Recommendations** — Slot-based delay optimization with network role classification (edge/relay/hub/backbone)
- **LBT Insights widgets** — Channel health, collision risk, noise floor, link quality at a glance
- **Time range selector** — View stats from 20 minutes to 7 days
- **Time range selector** — View stats from 20 minutes to 14 days
- **Recent packets** — Live feed of incoming traffic with centralized polling (every 3s)
### Contacts & Topology
@@ -187,56 +187,63 @@ Once complete, access your dashboard at `http://<your-pi-ip>:8000`
After installation, run `sudo bash manage.sh` to access the management menu:
```
┌─────────────────────────────────────┐
pyMC Console Management
├─────────────────────────────────────┤
│ 1. Start Service │
2. Stop Service
3. Restart Service
4. View Logs
5. Configure Radio
6. Configure GPIO
7. Upgrade
│ 8. Uninstall │
│ 9. Exit │
└─────────────────────────────────────┘
┌────────────────────────────────────────────────
│ pyMC Console
│ Status: Running │
├────────────────────────────────────────────────┤
install Fresh installation
upgrade Upgrade existing
uninstall Remove everything
status Show versions
logs View live logs
exit Exit
└────────────────────────────────────────────────┘
```
### Menu Options
- **Start/Stop/Restart** — Control the repeater service
- **View Logs** — Live log output from the repeater
- **Configure Radio** — Set frequency, power, bandwidth, SF via preset selection
- **Configure GPIO** — Set up SPI bus and GPIO pins for your LoRa module
- **Upgrade** — Pull latest updates and reinstall
- **Uninstall** — Remove the installation completely
- **Install** — Fresh installation (Full Stack or Console-only)
- **Upgrade** — Update Console dashboard and/or full pyMC stack
- **Uninstall** — Remove Console, Repeater, and cloned repos
- **Status** — Show installed versions (Core, Repeater, Console)
- **Logs** — Live log output from the repeater
### Radio/GPIO Configuration
Radio and GPIO settings are managed by upstream pyMC_Repeater:
```bash
cd ~/pyMC_Repeater && sudo ./manage.sh
```
## Upgrading
To update to the latest version, use the TUI menu:
To update to the latest version:
```bash
cd pymc_console
sudo bash manage.sh
sudo bash manage.sh upgrade
```
Select **Upgrade** and choose:
- **Console UI only** — Updates just the web dashboard (recommended, quick)
- **Full upgrade** — Updates Console + pulls latest pyMC_Repeater/pyMC_core
Or use the interactive menu and select **Upgrade**, then choose:
- **Console only** — Updates just the web dashboard (quick, safe)
- **Full Stack** — Updates Console + pulls latest pyMC_Repeater/pyMC_core
**Note:** You can safely upgrade Console without affecting your Repeater installation. This is useful when you want new dashboard features but your repeater is running stable.
The script auto-updates itself before upgrading, so you always get the latest installer.
## Configuration
### Radio Settings
Use the **Configure Radio** menu option, or edit directly:
Radio configuration is handled by upstream pyMC_Repeater. Use their management script:
```bash
sudo nano /etc/pymc_repeater/config.yaml
cd ~/pyMC_Repeater && sudo ./manage.sh
```
Key settings:
Or edit the config directly:
```yaml
radio:
frequency: 927875000 # Frequency in Hz
@@ -392,7 +399,7 @@ Before Viterbi decoding, candidates are scored using four-factor analysis inspir
- **Dual-hop anchoring** — Candidates scored by distance to both previous and next hops (a relay must be within RF range of both neighbors)
- **Score-weighted redistribution** — Appearance counts redistributed proportionally by combined score
The system maintains up to 75,000 packets in session memory (~2.5 days at 30k/day) for comprehensive topology evidence.
The system maintains up to 500,000 packets in session memory for comprehensive topology evidence, with tiered loading (24h initial → 3d → 7d → 14d on demand).
### Edge Rendering
+1 -1
View File
@@ -1 +1 @@
0.9.217
0.9.218
@@ -1 +1 @@
import{j as e,c as s}from"./vendor-react-BKIq8k5U.js";import{B as l}from"./index-Blr8m74E.js";function t({title:t,icon:r,badge:i,badgeColor:a="teal",subtitle:c,actions:n,iconColor:x="text-icon-card-title",largeTitle:d=!1,listHeader:m=!1,stackActionsOnMobile:o=!1}){return o&&n?e.jsxs("div",{className:s("flex flex-col gap-1 flex-shrink-0",m?"px-4 py-3 border-b border-border-subtle bg-bg-elevated/20":"mb-3"),children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 min-h-[32px]",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[r&&e.jsx("span",{className:s("icon-md flex items-center justify-center",x),children:r}),e.jsx("span",{className:s(d?"type-subheading text-text-primary":"type-micro"),children:t}),i&&e.jsx(l,{color:a,children:i})]}),e.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:n})]}),c&&e.jsx("p",{className:"type-label text-text-muted ml-8",children:c})]}):e.jsxs("div",{className:s("flex flex-col gap-1 flex-shrink-0",m?"px-4 py-3 border-b border-border-subtle bg-bg-elevated/20":"mb-3"),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 min-h-[32px]",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[r&&e.jsx("span",{className:s("icon-md flex items-center justify-center",x),children:r}),e.jsx("span",{className:s(d?"type-subheading text-text-primary":"type-micro"),children:t}),i&&e.jsx(l,{color:a,children:i})]}),n&&e.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:n})]}),c&&e.jsx("p",{className:"type-label text-text-muted ml-8",children:c})]})}function r({children:l,centered:t,className:r}){return e.jsx("div",{className:s("flex-1 min-h-0",t&&"flex items-center justify-center",r),children:l})}export{t as C,r as a};
import{j as e,c as s}from"./vendor-react-BKIq8k5U.js";import{B as l}from"./index-_WuEOacy.js";function t({title:t,icon:r,badge:i,badgeColor:a="teal",subtitle:c,actions:n,iconColor:x="text-icon-card-title",largeTitle:d=!1,listHeader:m=!1,stackActionsOnMobile:o=!1}){return o&&n?e.jsxs("div",{className:s("flex flex-col gap-1 flex-shrink-0",m?"px-4 py-3 border-b border-border-subtle bg-bg-elevated/20":"mb-3"),children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 min-h-[32px]",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[r&&e.jsx("span",{className:s("icon-md flex items-center justify-center",x),children:r}),e.jsx("span",{className:s(d?"type-subheading text-text-primary":"type-micro"),children:t}),i&&e.jsx(l,{color:a,children:i})]}),e.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:n})]}),c&&e.jsx("p",{className:"type-label text-text-muted ml-8",children:c})]}):e.jsxs("div",{className:s("flex flex-col gap-1 flex-shrink-0",m?"px-4 py-3 border-b border-border-subtle bg-bg-elevated/20":"mb-3"),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 min-h-[32px]",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[r&&e.jsx("span",{className:s("icon-md flex items-center justify-center",x),children:r}),e.jsx("span",{className:s(d?"type-subheading text-text-primary":"type-micro"),children:t}),i&&e.jsx(l,{color:a,children:i})]}),n&&e.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:n})]}),c&&e.jsx("p",{className:"type-label text-text-muted ml-8",children:c})]})}function r({children:l,centered:t,className:r}){return e.jsx("div",{className:s("flex-1 min-h-0",t&&"flex items-center justify-center",r),children:l})}export{t as C,r as a};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{c as e,G as t,cf as n,H as a,cg as s}from"./index-Blr8m74E.js";import{r,j as o,c as i}from"./vendor-react-BKIq8k5U.js";import{T as c}from"./triangle-alert-X78PRkJT.js";const d=e("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),l=e("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]),m={danger:{icon:"text-accent-danger",button:"bg-accent-danger hover:brightness-110 active:brightness-90"},warning:{icon:"text-accent-secondary",button:"bg-accent-secondary hover:brightness-110 active:brightness-90 text-bg-body"},default:{icon:"text-accent-primary",button:"bg-accent-primary hover:brightness-110 active:brightness-90 text-bg-body"}},h=r.memo(function({isOpen:e,title:r="Confirm",message:d,confirmLabel:l="Confirm",cancelLabel:h="Cancel",variant:b="default",onConfirm:x,onCancel:p}){const g=m[b];return o.jsxs(t,{open:e,onClose:p,size:"sm",children:[o.jsx(n,{icon:o.jsx(c,{className:i("w-5 h-5",g.icon)}),title:r,onClose:p}),o.jsx(a,{children:o.jsx("p",{className:"text-sm text-text-secondary",children:d})}),o.jsxs(s,{children:[o.jsx("button",{onClick:p,className:"flex-1 px-4 py-2.5 radius-inner text-sm font-medium text-text-secondary bg-bg-subtle hover-bg border-control transition-base",children:h}),o.jsx("button",{onClick:x,className:i("flex-1 px-4 py-2.5 radius-inner text-sm font-medium text-text-primary transition-base",g.button),children:l})]})]})});export{h as C,d as P,l as T};
import{c as e,H as t,cg as n,I as a,ch as s}from"./index-_WuEOacy.js";import{r,j as o,c as i}from"./vendor-react-BKIq8k5U.js";import{T as c}from"./triangle-alert-aHb4szMy.js";const d=e("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),l=e("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]),m={danger:{icon:"text-accent-danger",button:"bg-accent-danger hover:brightness-110 active:brightness-90"},warning:{icon:"text-accent-secondary",button:"bg-accent-secondary hover:brightness-110 active:brightness-90 text-bg-body"},default:{icon:"text-accent-primary",button:"bg-accent-primary hover:brightness-110 active:brightness-90 text-bg-body"}},h=r.memo(function({isOpen:e,title:r="Confirm",message:d,confirmLabel:l="Confirm",cancelLabel:h="Cancel",variant:b="default",onConfirm:x,onCancel:p}){const g=m[b];return o.jsxs(t,{open:e,onClose:p,size:"sm",children:[o.jsx(n,{icon:o.jsx(c,{className:i("w-5 h-5",g.icon)}),title:r,onClose:p}),o.jsx(a,{children:o.jsx("p",{className:"text-sm text-text-secondary",children:d})}),o.jsxs(s,{children:[o.jsx("button",{onClick:p,className:"flex-1 px-4 py-2.5 radius-inner text-sm font-medium text-text-secondary bg-bg-subtle hover-bg border-control transition-base",children:h}),o.jsx("button",{onClick:x,className:i("flex-1 px-4 py-2.5 radius-inner text-sm font-medium text-text-primary transition-base",g.button),children:l})]})]})});export{h as C,d as P,l as T};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{r as e,j as t,c as o}from"./vendor-react-BKIq8k5U.js";import{c}from"./index-Blr8m74E.js";const a=c("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),n=c("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),s={standard:"w-3 h-3",compact:"w-2.5 h-2.5",responsive:"w-2.5 h-2.5 sm:w-3 sm:h-3"};function r({children:c,copyValue:r,copy:i=!1,size:l="standard",className:p,title:d,color:u,truncate:m}){const[h,x]=e.useState(!1),[y,w]=e.useState(!1),f=e.useRef(null),v=r??("string"==typeof c?c:""),b=s[l],g=(()=>{if(!m||"string"!=typeof c)return c;const e=c,[t,o]=!0===m?[6,4]:m;return e.length<=t+o+3?e:`${e.slice(0,t)}${e.slice(-o)}`})(),j=e.useCallback(e=>{i&&(e.preventDefault(),e.stopPropagation(),f.current&&clearTimeout(f.current),function(e){var t;if("undefined"!=typeof window&&(window.isSecureContext||"https:"===window.location.protocol||"localhost"===window.location.hostname)&&(null==(t=navigator.clipboard)?void 0:t.writeText))return navigator.clipboard.writeText(e).catch(()=>{}),!0;try{const{scrollX:t,scrollY:o}=window,c=document.createElement("textarea");c.value=e,c.style.cssText="position:fixed;left:-9999px;top:-9999px;opacity:0;pointer-events:none",c.setAttribute("readonly",""),document.body.appendChild(c),c.focus({preventScroll:!0}),c.select(),c.setSelectionRange(0,e.length);const a=document.execCommand("copy");return document.body.removeChild(c),window.scrollTo(t,o),a}catch(o){return!1}}(v),x(!0),f.current=setTimeout(()=>x(!1),2e3))},[i,v]),C="compact"===l?"data-box-compact":"responsive"===l?"data-box-responsive":"",k=i?d||`Click to copy: ${v}`:d;return i?t.jsxs("button",{type:"button",onClick:j,onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),className:o("data-box interactive",C,"cursor-pointer select-none gap-1","hover-bg",u,p),title:k,"aria-label":`Copy ${v}`,children:[t.jsx("span",{className:o("transition-colors duration-200",h?"text-accent-success":""),children:g}),t.jsx("span",{className:o("flex items-center justify-center","compact"===l?"w-3 h-3":"w-3.5 h-3.5"),children:h?t.jsx(a,{className:o("text-accent-success",b)}):t.jsx(n,{className:o("transition-opacity duration-200",y?"opacity-70":"opacity-40",b)})})]}):t.jsx("span",{className:o("data-box",C,u,p),title:k,children:g})}export{a as C,r as D,n as a};
import{r as e,j as t,c as o}from"./vendor-react-BKIq8k5U.js";import{c}from"./index-_WuEOacy.js";const a=c("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),n=c("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),s={standard:"w-3 h-3",compact:"w-2.5 h-2.5",responsive:"w-2.5 h-2.5 sm:w-3 sm:h-3"};function r({children:c,copyValue:r,copy:i=!1,size:l="standard",className:p,title:d,color:u,truncate:m}){const[h,x]=e.useState(!1),[y,w]=e.useState(!1),f=e.useRef(null),v=r??("string"==typeof c?c:""),b=s[l],g=(()=>{if(!m||"string"!=typeof c)return c;const e=c,[t,o]=!0===m?[6,4]:m;return e.length<=t+o+3?e:`${e.slice(0,t)}${e.slice(-o)}`})(),j=e.useCallback(e=>{i&&(e.preventDefault(),e.stopPropagation(),f.current&&clearTimeout(f.current),function(e){var t;if("undefined"!=typeof window&&(window.isSecureContext||"https:"===window.location.protocol||"localhost"===window.location.hostname)&&(null==(t=navigator.clipboard)?void 0:t.writeText))return navigator.clipboard.writeText(e).catch(()=>{}),!0;try{const{scrollX:t,scrollY:o}=window,c=document.createElement("textarea");c.value=e,c.style.cssText="position:fixed;left:-9999px;top:-9999px;opacity:0;pointer-events:none",c.setAttribute("readonly",""),document.body.appendChild(c),c.focus({preventScroll:!0}),c.select(),c.setSelectionRange(0,e.length);const a=document.execCommand("copy");return document.body.removeChild(c),window.scrollTo(t,o),a}catch(o){return!1}}(v),x(!0),f.current=setTimeout(()=>x(!1),2e3))},[i,v]),C="compact"===l?"data-box-compact":"responsive"===l?"data-box-responsive":"",k=i?d||`Click to copy: ${v}`:d;return i?t.jsxs("button",{type:"button",onClick:j,onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),className:o("data-box interactive",C,"cursor-pointer select-none gap-1","hover-bg",u,p),title:k,"aria-label":`Copy ${v}`,children:[t.jsx("span",{className:o("transition-colors duration-200",h?"text-accent-success":""),children:g}),t.jsx("span",{className:o("flex items-center justify-center","compact"===l?"w-3 h-3":"w-3.5 h-3.5"),children:h?t.jsx(a,{className:o("text-accent-success",b)}):t.jsx(n,{className:o("transition-opacity duration-200",y?"opacity-70":"opacity-40",b)})})]}):t.jsx("span",{className:o("data-box",C,u,p),title:k,children:g})}export{a as C,r as D,n as a};
@@ -1 +1 @@
import{c as e,av as t,cV as a,cW as s,G as i,cX as n,H as c,m as r,as as o}from"./index-Blr8m74E.js";import{r as l,j as d,c as m}from"./vendor-react-BKIq8k5U.js";import{e as p,d as x}from"./config-C7QO3CEB.js";import{C as h}from"./DataBox-BnWn5Buv.js";import{G as g}from"./git-branch-CLzFkl_Q.js";import{D as y}from"./database-CRMVdIfF.js";import{L as f}from"./loader-circle-jOE-kQrI.js";const u=e("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),j=e("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]),v=e("minimize-2",[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]]),b={hidden:{opacity:0,scale:.9},visible:{opacity:1,scale:1,transition:{type:"spring",stiffness:400,damping:15}},exit:{opacity:0,scale:.9,transition:{duration:x.fast}}},N={hidden:{opacity:0,y:"100%"},visible:{opacity:1,y:0,transition:{type:"spring",stiffness:400,damping:30}},exit:{opacity:0,y:"100%",transition:{duration:x.medium,ease:p.easeIn}}};function k({label:e,icon:t,status:a,detail:s}){return d.jsxs("div",{className:m("flex items-center gap-3 py-3 px-4 radius-inset transition-base","active"===a&&"bg-accent-primary/10","complete"===a&&"bg-accent-primary/10 ring-2 ring-inset ring-accent-primary","pending"===a&&"opacity-40"),children:[d.jsx("div",{className:m("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0 transition-all duration-300","active"===a&&"bg-accent-primary/20","complete"===a&&"bg-accent-primary/20","pending"===a&&"bg-subtle-fill"),children:"complete"===a?d.jsx(h,{className:"w-4 h-4 text-accent-primary"}):"active"===a?d.jsx(f,{className:"w-4 h-4 animate-spin text-accent-primary"}):d.jsx("span",{className:"text-text-muted",children:t})}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsx("div",{className:m("text-sm font-medium transition-colors","active"===a&&"text-accent-primary","complete"===a&&"text-accent-primary","pending"===a&&"text-text-muted"),children:e}),s&&"pending"!==a&&d.jsx("div",{className:"text-xs text-text-muted mt-0.5 truncate",children:s})]})]})}const w=l.memo(function({isOpen:e,onClose:m}){const{packetCacheState:p,triggerDeepAnalysis:x}=t(),f=a(),j=s(),v=p.packetCount,[N,w]=l.useState("fetching");l.useEffect(()=>{e&&x()},[e,x]),l.useEffect(()=>{if(e)if(p.isTopologyLoading)w("fetching");else if(f)w("analyzing"),setTimeout(()=>w("building"),500),setTimeout(()=>w("discovering"),1e3);else if(j>0&&!p.isTopologyLoading){w("complete");const e=setTimeout(()=>{m()},1500);return()=>clearTimeout(e)}},[e,p.isTopologyLoading,f,j,m]);const M="complete"===N,T=p.loadProgress,z=l.useMemo(()=>T&&T.target>0?`Loading... ${(T.loaded/1e3).toFixed(1)}k / ${(T.target/1e3).toFixed(1)}k packets (${T.percent}%)`:v>0?`${v.toLocaleString()} packets loaded`:"Connecting to database...",[T,v]),C=e=>{const t=["fetching","analyzing","building","discovering","complete"],a=t.indexOf(N),s=t.indexOf(e);return s<a?"complete":s===a?"active":"pending"},D=M?m:()=>{};return d.jsx(i,{open:e,onClose:D,size:"sm",bottomSheet:!1,children:d.jsx(n,{isLoading:!M,borderRadius:16,children:d.jsx(c,{className:"p-6 radius-card overflow-hidden",children:M?d.jsxs("div",{className:"flex flex-col items-center py-6",children:[d.jsx(r.div,{variants:b,initial:"hidden",animate:"visible",className:"w-16 h-16 rounded-full flex items-center justify-center mb-4 bg-accent-primary/20",children:d.jsx(h,{className:"w-8 h-8 text-accent-primary"})}),d.jsx("h3",{className:"text-lg font-semibold text-accent-primary",children:"Ready!"})]}):d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[d.jsx("div",{className:"w-10 h-10 radius-inset flex items-center justify-center bg-accent-primary/15",children:d.jsx(g,{className:"w-5 h-5 text-accent-primary"})}),d.jsxs("div",{children:[d.jsx("h3",{className:"text-base font-semibold text-text-primary",children:"Deep Analysis"}),d.jsx("p",{className:"text-xs text-text-muted",children:"Building mesh topology"})]})]}),d.jsxs("div",{className:"space-y-2",children:[d.jsx(k,{label:"Fetching Packets",icon:d.jsx(u,{className:"w-4 h-4"}),status:C("fetching"),detail:z}),d.jsx(k,{label:"Analyzing Database",icon:d.jsx(y,{className:"w-4 h-4"}),status:C("analyzing"),detail:"Processing packet paths"}),d.jsx(k,{label:"Building Topology",icon:d.jsx(g,{className:"w-4 h-4"}),status:C("building"),detail:"Computing mesh edges"}),d.jsx(k,{label:"Discovering Nodes",icon:d.jsx(o,{className:"w-4 h-4"}),status:C("discovering"),detail:"Viterbi HMM ghost detection"})]}),d.jsx("p",{className:"text-xs text-text-muted text-center mt-5",children:"This may take a few seconds..."})]})})})})});export{w as D,v as M,j as a,u as b,N as s};
import{c as e,aw as t,cW as a,cX as s,H as i,cY as n,I as c,m as r,at as o}from"./index-_WuEOacy.js";import{r as l,j as d,c as m}from"./vendor-react-BKIq8k5U.js";import{e as p,d as x}from"./config-C7QO3CEB.js";import{C as h}from"./DataBox-ihLFk7Um.js";import{G as g}from"./git-branch-BPL9j6g1.js";import{D as y}from"./database-DzqBwrzM.js";import{L as f}from"./loader-circle-E8BhCd6Y.js";const u=e("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),j=e("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]),b=e("minimize-2",[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]]),v={hidden:{opacity:0,scale:.9},visible:{opacity:1,scale:1,transition:{type:"spring",stiffness:400,damping:15}},exit:{opacity:0,scale:.9,transition:{duration:x.fast}}},N={hidden:{opacity:0,y:"100%"},visible:{opacity:1,y:0,transition:{type:"spring",stiffness:400,damping:30}},exit:{opacity:0,y:"100%",transition:{duration:x.medium,ease:p.easeIn}}};function k({label:e,icon:t,status:a,detail:s}){return d.jsxs("div",{className:m("flex items-center gap-3 py-3 px-4 radius-inset transition-base","active"===a&&"bg-accent-primary/10","complete"===a&&"bg-accent-primary/10 ring-2 ring-inset ring-accent-primary","pending"===a&&"opacity-40"),children:[d.jsx("div",{className:m("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0 transition-all duration-300","active"===a&&"bg-accent-primary/20","complete"===a&&"bg-accent-primary/20","pending"===a&&"bg-subtle-fill"),children:"complete"===a?d.jsx(h,{className:"w-4 h-4 text-accent-primary"}):"active"===a?d.jsx(f,{className:"w-4 h-4 animate-spin text-accent-primary"}):d.jsx("span",{className:"text-text-muted",children:t})}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsx("div",{className:m("text-sm font-medium transition-colors","active"===a&&"text-accent-primary","complete"===a&&"text-accent-primary","pending"===a&&"text-text-muted"),children:e}),s&&"pending"!==a&&d.jsx("div",{className:"text-xs text-text-muted mt-0.5 truncate",children:s})]})]})}const w=l.memo(function({isOpen:e,onClose:m}){const{packetCacheState:p,triggerDeepAnalysis:x}=t(),f=a(),j=s(),b=p.packetCount,[N,w]=l.useState("fetching");l.useEffect(()=>{e&&x()},[e,x]),l.useEffect(()=>{if(e)if(p.isTopologyLoading)w("fetching");else if(f)w("analyzing"),setTimeout(()=>w("building"),500),setTimeout(()=>w("discovering"),1e3);else if(j>0&&!p.isTopologyLoading){w("complete");const e=setTimeout(()=>{m()},1500);return()=>clearTimeout(e)}},[e,p.isTopologyLoading,f,j,m]);const M="complete"===N,T=p.loadProgress,z=l.useMemo(()=>T&&T.target>0?`Loading... ${(T.loaded/1e3).toFixed(1)}k / ${(T.target/1e3).toFixed(1)}k packets (${T.percent}%)`:b>0?`${b.toLocaleString()} packets loaded`:"Connecting to database...",[T,b]),C=e=>{const t=["fetching","analyzing","building","discovering","complete"],a=t.indexOf(N),s=t.indexOf(e);return s<a?"complete":s===a?"active":"pending"},D=M?m:()=>{};return d.jsx(i,{open:e,onClose:D,size:"sm",bottomSheet:!1,children:d.jsx(n,{isLoading:!M,borderRadius:16,children:d.jsx(c,{className:"p-6 radius-card overflow-hidden",children:M?d.jsxs("div",{className:"flex flex-col items-center py-6",children:[d.jsx(r.div,{variants:v,initial:"hidden",animate:"visible",className:"w-16 h-16 rounded-full flex items-center justify-center mb-4 bg-accent-primary/20",children:d.jsx(h,{className:"w-8 h-8 text-accent-primary"})}),d.jsx("h3",{className:"text-lg font-semibold text-accent-primary",children:"Ready!"})]}):d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[d.jsx("div",{className:"w-10 h-10 radius-inset flex items-center justify-center bg-accent-primary/15",children:d.jsx(g,{className:"w-5 h-5 text-accent-primary"})}),d.jsxs("div",{children:[d.jsx("h3",{className:"text-base font-semibold text-text-primary",children:"Deep Analysis"}),d.jsx("p",{className:"text-xs text-text-muted",children:"Building mesh topology"})]})]}),d.jsxs("div",{className:"space-y-2",children:[d.jsx(k,{label:"Fetching Packets",icon:d.jsx(u,{className:"w-4 h-4"}),status:C("fetching"),detail:z}),d.jsx(k,{label:"Analyzing Database",icon:d.jsx(y,{className:"w-4 h-4"}),status:C("analyzing"),detail:"Processing packet paths"}),d.jsx(k,{label:"Building Topology",icon:d.jsx(g,{className:"w-4 h-4"}),status:C("building"),detail:"Computing mesh edges"}),d.jsx(k,{label:"Discovering Nodes",icon:d.jsx(o,{className:"w-4 h-4"}),status:C("discovering"),detail:"Viterbi HMM ghost detection"})]}),d.jsx("p",{className:"text-xs text-text-muted text-center mt-5",children:"This may take a few seconds..."})]})})})})});export{w as D,b as M,j as a,u as b,N as s};
@@ -1 +1 @@
import{c as e}from"./index-Blr8m74E.js";import{r as t,j as n}from"./vendor-react-BKIq8k5U.js";const a=e("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]),r=e("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]),i=e("trending-down",[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]]),s=e("trending-up",[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]),o="var(--sparkline-critical)",h="var(--sparkline-poor)",d="var(--sparkline-fair)",l="var(--sparkline-good)",c="var(--sparkline-excellent)",x=t.memo(function({data:e,width:a=48,height:r=16,color:i,isLoading:s=!1,className:x=""}){const u=t.useMemo(()=>function(e,t,n,a=2){if(e.length<2)return"";const r=e.map(e=>e.count),i=Math.max(...r,1),s=Math.min(...r),o=i-s||1,h=t-2*a,d=n-2*a,l=r.map((e,t)=>({x:a+t/(r.length-1)*h,y:a+d-(e-s)/o*d}));let c=`M ${l[0].x.toFixed(1)} ${l[0].y.toFixed(1)}`;for(let x=1;x<l.length;x++){const e=l[x-1],t=l[x];c+=` Q ${((e.x+t.x)/2).toFixed(1)} ${e.y.toFixed(1)} ${t.x.toFixed(1)} ${t.y.toFixed(1)}`}return c}(e,a,r),[e,a,r]),m=t.useMemo(()=>i??(e.length>0?function(e){if(0===e.length)return o;const t=e.slice(-4),n=t.reduce((e,t)=>e+t.count,0),a=n/t.length,r=e.reduce((e,t)=>e+t.count,0)/e.length;if(0===n)return o;if(r>0){const e=a/r;return e>=1.2?c:e>=.8?l:e>=.4?d:e>=.1?h:o}return n>=10?c:n>=5?l:n>=2?d:n>=1?h:o}(e):"var(--text-muted)"),[i,e]);return s&&e.length<2?n.jsx("div",{className:`flex items-center justify-center ${x}`,style:{width:a,height:r},children:n.jsx("div",{className:"rounded animate-pulse bg-white/[0.06]",style:{width:a-8,height:r-6}})}):e.length<2?n.jsx("svg",{width:a,height:r,viewBox:`0 0 ${a} ${r}`,className:x,"aria-hidden":"true",children:n.jsx("line",{x1:4,y1:r/2,x2:a-4,y2:r/2,stroke:o,strokeWidth:1.5,strokeDasharray:"3,2"})}):n.jsx("svg",{width:a,height:r,viewBox:`0 0 ${a} ${r}`,preserveAspectRatio:"none",className:x,"aria-hidden":"true",style:{maxWidth:"100%"},children:n.jsx("path",{d:u,fill:"none",stroke:m,strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})})});export{x as L,r as M,s as T,i as a,a as b};
import{c as e}from"./index-_WuEOacy.js";import{r as t,j as n}from"./vendor-react-BKIq8k5U.js";const a=e("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]),r=e("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]),i=e("trending-down",[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]]),s=e("trending-up",[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]),o="var(--sparkline-critical)",h="var(--sparkline-poor)",d="var(--sparkline-fair)",l="var(--sparkline-good)",c="var(--sparkline-excellent)",x=t.memo(function({data:e,width:a=48,height:r=16,color:i,isLoading:s=!1,className:x=""}){const u=t.useMemo(()=>function(e,t,n,a=2){if(e.length<2)return"";const r=e.map(e=>e.count),i=Math.max(...r,1),s=Math.min(...r),o=i-s||1,h=t-2*a,d=n-2*a,l=r.map((e,t)=>({x:a+t/(r.length-1)*h,y:a+d-(e-s)/o*d}));let c=`M ${l[0].x.toFixed(1)} ${l[0].y.toFixed(1)}`;for(let x=1;x<l.length;x++){const e=l[x-1],t=l[x];c+=` Q ${((e.x+t.x)/2).toFixed(1)} ${e.y.toFixed(1)} ${t.x.toFixed(1)} ${t.y.toFixed(1)}`}return c}(e,a,r),[e,a,r]),m=t.useMemo(()=>i??(e.length>0?function(e){if(0===e.length)return o;const t=e.slice(-4),n=t.reduce((e,t)=>e+t.count,0),a=n/t.length,r=e.reduce((e,t)=>e+t.count,0)/e.length;if(0===n)return o;if(r>0){const e=a/r;return e>=1.2?c:e>=.8?l:e>=.4?d:e>=.1?h:o}return n>=10?c:n>=5?l:n>=2?d:n>=1?h:o}(e):"var(--text-muted)"),[i,e]);return s&&e.length<2?n.jsx("div",{className:`flex items-center justify-center ${x}`,style:{width:a,height:r},children:n.jsx("div",{className:"rounded animate-pulse bg-white/[0.06]",style:{width:a-8,height:r-6}})}):e.length<2?n.jsx("svg",{width:a,height:r,viewBox:`0 0 ${a} ${r}`,className:x,"aria-hidden":"true",children:n.jsx("line",{x1:4,y1:r/2,x2:a-4,y2:r/2,stroke:o,strokeWidth:1.5,strokeDasharray:"3,2"})}):n.jsx("svg",{width:a,height:r,viewBox:`0 0 ${a} ${r}`,preserveAspectRatio:"none",className:x,"aria-hidden":"true",style:{maxWidth:"100%"},children:n.jsx("path",{d:u,fill:"none",stroke:m,strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})})});export{x as L,r as M,s as T,i as a,a as b};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{r as e,j as s,c as a}from"./vendor-react-BKIq8k5U.js";import{c as t,b8 as l,b9 as r,h as c,ba as i,bb as n,bc as o,b0 as m,bd as x}from"./index-Blr8m74E.js";import{u as d}from"./usePolling-_rZ6EKji.js";import{P as h,b as p,B as g,a as j,L as u}from"./PageLayout-DWxMwn9Z.js";import{C as b}from"./Card-DhhGEFAo.js";import"./deckgl-DTsmDcfs.js";import"./vendor-core-D1aqi_5O.js";const y=t("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),f=t("circle-stop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]),v=e.memo(function({log:e}){return s.jsx("div",{className:"p-3 radius-card bg-subtle-fill hover:bg-subtle-fill-strong transition-base",children:s.jsxs("div",{className:"flex items-baseline gap-3",children:[s.jsx("span",{className:a("type-data-sm w-14 shrink-0",x(e.level)),children:e.level}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsx("p",{className:"type-data-sm text-text-primary break-words whitespace-pre-wrap",children:e.message}),s.jsx("p",{className:"type-data-xs text-text-muted mt-1",children:new Date(e.timestamp).toLocaleString()})]})]})})});function w({showDebug:e,onToggle:t}){return s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:a("type-data-sm",e?"text-accent-tertiary":"text-accent-primary"),children:e?"DEBUG":"INFO"}),s.jsx("button",{onClick:t,className:a("relative w-10 h-5 rounded-full transition-base",e?"bg-accent-tertiary":"bg-accent-primary"),role:"switch","aria-checked":e,children:s.jsx("span",{className:a("absolute top-[2px] left-[2px] w-4 h-4 bg-white rounded-full shadow-sm transition-transform duration-200",e?"translate-x-5":"translate-x-0")})})]})}function N(){const t=l(),x=r(),N=c(),k=i(),C=n(),[D,L]=e.useState(!1),P=e.useCallback(()=>{L(e=>!e)},[]),B=D?t:t.filter(e=>"DEBUG"!==e.level);return d(k,m.logs,N),s.jsxs(h,{children:[s.jsx(p,{title:"System Logs",icon:s.jsx(o,{}),controls:s.jsx(w,{showDebug:D,onToggle:P})}),s.jsx(g,{children:s.jsxs(j,{noPadding:!0,children:[s.jsx(b,{listHeader:!0,icon:s.jsx(o,{className:"icon-sm"}),title:"Log Entries",actions:s.jsx("button",{onClick:()=>C(!N),className:a("transition-base",N?"text-signal-critical hover:text-signal-critical/80":"text-accent-primary hover:text-accent-primary/80 animate-pulse-slow"),title:N?"Pause":"Resume",children:N?s.jsx(f,{className:"w-5 h-5"}):s.jsx(y,{className:"w-5 h-5"})})}),s.jsx("div",{className:"space-y-2 max-h-[calc(100vh-300px)] sm:max-h-[calc(100vh-250px)] overflow-y-auto p-4",children:x&&0===t.length?s.jsx(u,{count:10}):0===B.length?s.jsx("div",{className:"text-center py-12 text-text-muted",children:0===t.length?"No logs available":"No logs match selected filters"}):B.map((e,a)=>s.jsx(v,{log:e},`${e.timestamp}-${a}`))})]})})]})}export{N as default};
import{r as e,j as s,c as a}from"./vendor-react-BKIq8k5U.js";import{c as t,b9 as l,ba as r,h as c,bb as i,bc as n,bd as o,b1 as m,be as x}from"./index-_WuEOacy.js";import{u as d}from"./usePolling-_rZ6EKji.js";import{P as h,b as p,B as g,a as j,L as u}from"./PageLayout-C4LpOVqW.js";import{C as b}from"./Card-BSUcfChC.js";import"./deckgl-DTsmDcfs.js";import"./vendor-core-D1aqi_5O.js";const y=t("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),f=t("circle-stop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]),v=e.memo(function({log:e}){return s.jsx("div",{className:"p-3 radius-card bg-subtle-fill hover:bg-subtle-fill-strong transition-base",children:s.jsxs("div",{className:"flex items-baseline gap-3",children:[s.jsx("span",{className:a("type-data-sm w-14 shrink-0",x(e.level)),children:e.level}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsx("p",{className:"type-data-sm text-text-primary break-words whitespace-pre-wrap",children:e.message}),s.jsx("p",{className:"type-data-xs text-text-muted mt-1",children:new Date(e.timestamp).toLocaleString()})]})]})})});function w({showDebug:e,onToggle:t}){return s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:a("type-data-sm",e?"text-accent-tertiary":"text-accent-primary"),children:e?"DEBUG":"INFO"}),s.jsx("button",{onClick:t,className:a("relative w-10 h-5 rounded-full transition-base",e?"bg-accent-tertiary":"bg-accent-primary"),role:"switch","aria-checked":e,children:s.jsx("span",{className:a("absolute top-[2px] left-[2px] w-4 h-4 bg-white rounded-full shadow-sm transition-transform duration-200",e?"translate-x-5":"translate-x-0")})})]})}function N(){const t=l(),x=r(),N=c(),k=i(),C=n(),[D,L]=e.useState(!1),P=e.useCallback(()=>{L(e=>!e)},[]),B=D?t:t.filter(e=>"DEBUG"!==e.level);return d(k,m.logs,N),s.jsxs(h,{children:[s.jsx(p,{title:"System Logs",icon:s.jsx(o,{}),controls:s.jsx(w,{showDebug:D,onToggle:P})}),s.jsx(g,{children:s.jsxs(j,{noPadding:!0,children:[s.jsx(b,{listHeader:!0,icon:s.jsx(o,{className:"icon-sm"}),title:"Log Entries",actions:s.jsx("button",{onClick:()=>C(!N),className:a("transition-base",N?"text-signal-critical hover:text-signal-critical/80":"text-accent-primary hover:text-accent-primary/80 animate-pulse-slow"),title:N?"Pause":"Resume",children:N?s.jsx(f,{className:"w-5 h-5"}):s.jsx(y,{className:"w-5 h-5"})})}),s.jsx("div",{className:"space-y-2 max-h-[calc(100vh-300px)] sm:max-h-[calc(100vh-250px)] overflow-y-auto p-4",children:x&&0===t.length?s.jsx(u,{count:10}):0===B.length?s.jsx("div",{className:"text-center py-12 text-text-muted",children:0===t.length?"No logs available":"No logs match selected filters"}):B.map((e,a)=>s.jsx(v,{log:e},`${e.timestamp}-${a}`))})]})})]})}export{N as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{j as e}from"./vendor-react-BKIq8k5U.js";import{a as s}from"./PageLayout-DWxMwn9Z.js";import{D as t}from"./DataBox-BnWn5Buv.js";import{R as a,be as r}from"./index-Blr8m74E.js";import{C as l}from"./Card-DhhGEFAo.js";function c({nodeName:c,repeaterVersion:m,coreVersion:i,localHash:n,publicKey:d}){return e.jsxs(s,{children:[e.jsx(l,{icon:e.jsx(a,{}),title:"Node Information",largeTitle:!0}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3 sm:gap-4",children:[e.jsxs("div",{className:"min-w-0 col-span-2 sm:col-span-1",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Node Name"}),e.jsx("p",{className:"type-body text-text-primary mt-0.5 sm:mt-1 truncate",title:c,children:c})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Repeater"}),e.jsxs("p",{className:"type-data text-text-primary mt-0.5 sm:mt-1 truncate",title:`v${m}`,children:["v",m]})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Core"}),e.jsxs("p",{className:"type-data text-text-primary mt-0.5 sm:mt-1 truncate",title:`v${i}`,children:["v",i]})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Console"}),e.jsxs("p",{className:"type-data text-text-primary mt-0.5 sm:mt-1 truncate",title:`v${r}`,children:["v",r]})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Local Hash"}),e.jsx("div",{className:"mt-0.5 sm:mt-1",children:n?e.jsx(t,{copy:!0,size:"compact",children:n}):e.jsx("span",{className:"type-data-sm text-text-secondary",children:"N/A"})})]})]}),d&&e.jsxs("div",{className:"mt-3 sm:mt-4 pt-3 sm:pt-4 border-t border-border-subtle",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Public Key"}),e.jsx("div",{className:"mt-0.5 sm:mt-1",children:e.jsx(t,{copy:!0,size:"responsive",children:d})})]})]})}export{c as N};
import{j as e}from"./vendor-react-BKIq8k5U.js";import{a as s}from"./PageLayout-C4LpOVqW.js";import{D as t}from"./DataBox-ihLFk7Um.js";import{R as a,bf as r}from"./index-_WuEOacy.js";import{C as l}from"./Card-BSUcfChC.js";function c({nodeName:c,repeaterVersion:m,coreVersion:i,localHash:n,publicKey:d}){return e.jsxs(s,{children:[e.jsx(l,{icon:e.jsx(a,{}),title:"Node Information",largeTitle:!0}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3 sm:gap-4",children:[e.jsxs("div",{className:"min-w-0 col-span-2 sm:col-span-1",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Node Name"}),e.jsx("p",{className:"type-body text-text-primary mt-0.5 sm:mt-1 truncate",title:c,children:c})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Repeater"}),e.jsxs("p",{className:"type-data text-text-primary mt-0.5 sm:mt-1 truncate",title:`v${m}`,children:["v",m]})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Core"}),e.jsxs("p",{className:"type-data text-text-primary mt-0.5 sm:mt-1 truncate",title:`v${i}`,children:["v",i]})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Console"}),e.jsxs("p",{className:"type-data text-text-primary mt-0.5 sm:mt-1 truncate",title:`v${r}`,children:["v",r]})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Local Hash"}),e.jsx("div",{className:"mt-0.5 sm:mt-1",children:n?e.jsx(t,{copy:!0,size:"compact",children:n}):e.jsx("span",{className:"type-data-sm text-text-secondary",children:"N/A"})})]})]}),d&&e.jsxs("div",{className:"mt-3 sm:mt-4 pt-3 sm:pt-4 border-t border-border-subtle",children:[e.jsx("span",{className:"type-label text-text-secondary",children:"Public Key"}),e.jsx("div",{className:"mt-0.5 sm:mt-1",children:e.jsx(t,{copy:!0,size:"responsive",children:d})})]})]})}export{c as N};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{j as s,c as e}from"./vendor-react-BKIq8k5U.js";import"./index-Blr8m74E.js";const a=[45,72,33,58,80,42,65,28,55,75,38,62];function l({className:a,style:l}){return s.jsx("div",{className:e("animate-pulse bg-subtle-fill radius-badge",a),style:l})}function c(){return s.jsx("div",{className:"p-3 radius-inner border-card bg-bg-subtle",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(l,{className:"w-14 h-6 rounded shrink-0"}),s.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[s.jsx(l,{className:"h-4 w-full"}),s.jsx(l,{className:"h-4 w-3/4"}),s.jsx(l,{className:"h-3 w-32 mt-1"})]})]})})}function r({count:e=8}){return s.jsx("div",{className:"space-y-2",children:Array.from({length:e}).map((e,a)=>s.jsx(c,{},a))})}function i(){return s.jsxs("div",{className:"flex flex-col gap-3 h-full","aria-hidden":"true",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(l,{className:"w-5 h-5"}),s.jsx(l,{className:"h-4 w-24"})]}),s.jsx(l,{className:"h-8 w-20"}),s.jsxs("div",{className:"flex-1 flex flex-col justify-end gap-2",children:[s.jsx(l,{className:"h-3 w-full"}),s.jsx(l,{className:"h-3 w-3/4"})]})]})}function n(){return s.jsxs("div",{className:"flex flex-col gap-3 h-full","aria-hidden":"true",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(l,{className:"w-5 h-5"}),s.jsx(l,{className:"h-4 w-24"})]}),s.jsx("div",{className:"flex-1 flex items-end gap-1",children:a.slice(0,8).map((e,a)=>s.jsx(l,{className:"flex-1",style:{height:`${e}%`}},a))})]})}function t({rows:e=5}){return s.jsxs("div",{className:"flex flex-col h-full","aria-hidden":"true",children:[s.jsx("div",{className:"pb-3 border-b border-border-subtle",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(l,{className:"w-5 h-5"}),s.jsx(l,{className:"h-4 w-24"})]})}),s.jsx("div",{className:"flex-1 pt-3 flex flex-col gap-3",children:Array.from({length:e}).map((e,a)=>s.jsx(l,{className:"h-6 w-full"},a))})]})}function d({children:a,className:l}){return s.jsx("div",{className:e("section-gap",l),children:a})}function x({children:a,className:l}){return s.jsx("div",{className:e("bento-section",l),children:a})}function m({title:e,icon:a,controls:l,subtitle:c}){return s.jsxs("div",{className:"flex flex-col gap-2",children:[s.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between sm:gap-3",children:[s.jsxs("h1",{className:"type-title text-text-primary flex items-center gap-2 sm:gap-3 h-9 min-w-0",children:[a&&s.jsx("span",{className:"w-5 h-5 sm:w-6 sm:h-6 text-icon-page-title flex-shrink-0",children:a}),s.jsx("span",{className:"truncate",children:e})]}),l&&s.jsx("div",{className:"flex items-center gap-2 sm:gap-3 h-9 flex-shrink-0",children:l})]}),c&&s.jsx("div",{children:c})]})}const h={sm:"card-sm",md:"card-md",lg:"card-lg",hero:"card-hero",auto:"card-auto"};function f({children:a,size:l,compact:c,noPadding:r,className:d,style:x,onClick:m,isLoaded:f=!0,skeletonType:o="card"}){return s.jsxs("div",{className:e("surface-base rounded-2xl h-full flex flex-col relative",!r&&(c?"card-padding-sm":"card-padding"),l&&h[l],d),style:x,onClick:m,children:[a,!f&&(()=>{switch(o){case"chart":return s.jsx(n,{});case"list":return s.jsx(t,{});default:return s.jsx(i,{})}})()]})}export{x as B,i as C,r as L,d as P,l as S,f as a,m as b};
import{j as s,c as e}from"./vendor-react-BKIq8k5U.js";import"./index-_WuEOacy.js";const a=[45,72,33,58,80,42,65,28,55,75,38,62];function l({className:a,style:l}){return s.jsx("div",{className:e("animate-pulse bg-subtle-fill radius-badge",a),style:l})}function c(){return s.jsx("div",{className:"p-3 radius-inner border-card bg-bg-subtle",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(l,{className:"w-14 h-6 rounded shrink-0"}),s.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[s.jsx(l,{className:"h-4 w-full"}),s.jsx(l,{className:"h-4 w-3/4"}),s.jsx(l,{className:"h-3 w-32 mt-1"})]})]})})}function r({count:e=8}){return s.jsx("div",{className:"space-y-2",children:Array.from({length:e}).map((e,a)=>s.jsx(c,{},a))})}function i(){return s.jsxs("div",{className:"flex flex-col gap-3 h-full","aria-hidden":"true",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(l,{className:"w-5 h-5"}),s.jsx(l,{className:"h-4 w-24"})]}),s.jsx(l,{className:"h-8 w-20"}),s.jsxs("div",{className:"flex-1 flex flex-col justify-end gap-2",children:[s.jsx(l,{className:"h-3 w-full"}),s.jsx(l,{className:"h-3 w-3/4"})]})]})}function n(){return s.jsxs("div",{className:"flex flex-col gap-3 h-full","aria-hidden":"true",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(l,{className:"w-5 h-5"}),s.jsx(l,{className:"h-4 w-24"})]}),s.jsx("div",{className:"flex-1 flex items-end gap-1",children:a.slice(0,8).map((e,a)=>s.jsx(l,{className:"flex-1",style:{height:`${e}%`}},a))})]})}function t({rows:e=5}){return s.jsxs("div",{className:"flex flex-col h-full","aria-hidden":"true",children:[s.jsx("div",{className:"pb-3 border-b border-border-subtle",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(l,{className:"w-5 h-5"}),s.jsx(l,{className:"h-4 w-24"})]})}),s.jsx("div",{className:"flex-1 pt-3 flex flex-col gap-3",children:Array.from({length:e}).map((e,a)=>s.jsx(l,{className:"h-6 w-full"},a))})]})}function d({children:a,className:l}){return s.jsx("div",{className:e("section-gap",l),children:a})}function x({children:a,className:l}){return s.jsx("div",{className:e("bento-section",l),children:a})}function m({title:e,icon:a,controls:l,subtitle:c}){return s.jsxs("div",{className:"flex flex-col gap-2",children:[s.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between sm:gap-3",children:[s.jsxs("h1",{className:"type-title text-text-primary flex items-center gap-2 sm:gap-3 h-9 min-w-0",children:[a&&s.jsx("span",{className:"w-5 h-5 sm:w-6 sm:h-6 text-icon-page-title flex-shrink-0",children:a}),s.jsx("span",{className:"truncate",children:e})]}),l&&s.jsx("div",{className:"flex items-center gap-2 sm:gap-3 h-9 flex-shrink-0",children:l})]}),c&&s.jsx("div",{children:c})]})}const h={sm:"card-sm",md:"card-md",lg:"card-lg",hero:"card-hero",auto:"card-auto"};function f({children:a,size:l,compact:c,noPadding:r,className:d,style:x,onClick:m,isLoaded:f=!0,skeletonType:o="card"}){return s.jsxs("div",{className:e("surface-base rounded-2xl h-full flex flex-col relative",!r&&(c?"card-padding-sm":"card-padding"),l&&h[l],d),style:x,onClick:m,children:[a,!f&&(()=>{switch(o){case"chart":return s.jsx(n,{});case"list":return s.jsx(t,{});default:return s.jsx(i,{})}})()]})}export{x as B,i as C,r as L,d as P,l as S,f as a,m as b};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{c as e,aX as a}from"./index-Blr8m74E.js";import{r as s,j as o,c as t}from"./vendor-react-BKIq8k5U.js";import{A as i}from"./index-xcjUHHIH.js";const r=e("ear-off",[["path",{d:"M6 18.5a3.5 3.5 0 1 0 7 0c0-1.57.92-2.52 2.04-3.46",key:"1qngmn"}],["path",{d:"M6 8.5c0-.75.13-1.47.36-2.14",key:"b06bma"}],["path",{d:"M8.8 3.15A6.5 6.5 0 0 1 19 8.5c0 1.63-.44 2.81-1.09 3.76",key:"g10hsz"}],["path",{d:"M12.5 6A2.5 2.5 0 0 1 15 8.5M10 13a2 2 0 0 0 1.82-1.18",key:"ygzou7"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]),n={type:"spring",visualDuration:.4,bounce:.15,opacity:{duration:.15,ease:"linear"}},c=s.memo(function({value:e,format:t,prefix:r,suffix:c,className:l,priority:m="medium"}){const[u,f]=s.useState(!1),[p,d]=s.useState(e);s.useEffect(()=>a(()=>{f(!0),d(0)},m),[m]),s.useEffect(()=>{u&&d(e)},[u,e]);const g=`${r??""}${e.toLocaleString(void 0,t)}${c??""}`;return u?o.jsx(i,{className:`${l??""} overflow-hidden`,format:t,prefix:r,suffix:c,transition:n,children:p}):o.jsx("span",{className:l,children:g})}),l=s.memo(function({ranges:e,selectedIndex:a,onSelect:s,isPending:i,size:r="default"}){const n="sm"===r?"toggle-group-sm":"micro"===r?"toggle-group-micro":"";return o.jsx("div",{className:t("toggle-group flex-shrink-0 overflow-x-auto",n,i&&"opacity-70"),children:e.map((e,i)=>o.jsx("button",{onClick:()=>s(i),className:t("toggle-group-item",a===i&&"active"),children:e.label},e.label))})});export{c as A,r as E,l as T};
import{c as e,aY as a}from"./index-_WuEOacy.js";import{r as s,j as o,c as t}from"./vendor-react-BKIq8k5U.js";import{A as i}from"./index-DU6QWVJT.js";const r=e("ear-off",[["path",{d:"M6 18.5a3.5 3.5 0 1 0 7 0c0-1.57.92-2.52 2.04-3.46",key:"1qngmn"}],["path",{d:"M6 8.5c0-.75.13-1.47.36-2.14",key:"b06bma"}],["path",{d:"M8.8 3.15A6.5 6.5 0 0 1 19 8.5c0 1.63-.44 2.81-1.09 3.76",key:"g10hsz"}],["path",{d:"M12.5 6A2.5 2.5 0 0 1 15 8.5M10 13a2 2 0 0 0 1.82-1.18",key:"ygzou7"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]),n={type:"spring",visualDuration:.4,bounce:.15,opacity:{duration:.15,ease:"linear"}},c=s.memo(function({value:e,format:t,prefix:r,suffix:c,className:l,priority:m="medium"}){const[u,f]=s.useState(!1),[p,d]=s.useState(e);s.useEffect(()=>a(()=>{f(!0),d(0)},m),[m]),s.useEffect(()=>{u&&d(e)},[u,e]);const g=`${r??""}${e.toLocaleString(void 0,t)}${c??""}`;return u?o.jsx(i,{className:`${l??""} overflow-hidden`,format:t,prefix:r,suffix:c,transition:n,children:p}):o.jsx("span",{className:l,children:g})}),l=s.memo(function({ranges:e,selectedIndex:a,onSelect:s,isPending:i,size:r="default"}){const n="sm"===r?"toggle-group-sm":"micro"===r?"toggle-group-micro":"";return o.jsx("div",{className:t("toggle-group flex-shrink-0 overflow-x-auto",n,i&&"opacity-70"),children:e.map((e,i)=>o.jsx("button",{onClick:()=>s(i),className:t("toggle-group-item",a===i&&"active"),children:e.label},e.label))})});export{c as A,r as E,l as T};
@@ -1 +1 @@
import{c as a}from"./index-Blr8m74E.js";const t=a("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);export{t as A};
import{c as a}from"./index-_WuEOacy.js";const t=a("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);export{t as A};
@@ -1 +1 @@
import{c as a}from"./index-Blr8m74E.js";const e=a("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),r=a("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);export{e as A,r as a};
import{c as a}from"./index-_WuEOacy.js";const e=a("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),r=a("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);export{e as A,r as a};
-1
View File
@@ -1 +0,0 @@
import{c as t}from"./index-Blr8m74E.js";const h=t("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);export{h as C};
+1
View File
@@ -0,0 +1 @@
import{c as t}from"./index-_WuEOacy.js";const h=t("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);export{h as C};
@@ -1 +1 @@
import{c}from"./index-Blr8m74E.js";const e=c("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);export{e as C};
import{c}from"./index-_WuEOacy.js";const e=c("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);export{e as C};
@@ -1 +1 @@
import{c as a}from"./index-Blr8m74E.js";const c=a("compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);export{c as C};
import{c as a}from"./index-_WuEOacy.js";const c=a("compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);export{c as C};
@@ -1 +1 @@
import{c as e}from"./index-Blr8m74E.js";const s=e("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);export{s as D};
import{c as e}from"./index-_WuEOacy.js";const s=e("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);export{s as D};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{c}from"./index-Blr8m74E.js";const e=c("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);export{e as G};
import{c}from"./index-_WuEOacy.js";const e=c("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);export{e as G};
@@ -1 +1 @@
import{c as a}from"./index-Blr8m74E.js";const s=a("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);export{s as H};
import{c as a}from"./index-_WuEOacy.js";const s=a("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);export{s as H};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{c as e}from"./index-Blr8m74E.js";const c=e("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);export{c as I};
import{c as e}from"./index-_WuEOacy.js";const c=e("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);export{c as I};
@@ -1 +1 @@
import{c as t,r as e,cp as n}from"./index-Blr8m74E.js";const o=t("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),a=t("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);function s(t){if(Array.isArray(t))return t;if("string"==typeof t&&t.startsWith("["))try{const e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}return[]}function r(t,o,a){const r=new Map;for(const n of o){const t=e(n);r.has(t)||r.set(t,n)}const c=new Map,h=new Map;for(const e of t){const t=e.route??e.route_type;if(!n(t))continue;const o=s(e.original_path);if(0===o.length)continue;const i=o.map(t=>t.toUpperCase());if(!e.transmitted&&i.length>=2){const t=i[i.length-2];if(t){const e=r.get(t);e&&h.set(e,(h.get(e)??0)+1)}}if(i.includes(a))for(const e of i){if(e===a)continue;const t=r.get(e);t&&c.set(t,(c.get(t)??0)+1)}}let i=0,p=0;for(const e of o)i=Math.max(i,c.get(e)??0),p=Math.max(p,h.get(e)??0);const f=new Map;let u=0,d=0,m=0;for(const e of o){const t=c.get(e)??0,n=h.get(e)??0,o=i>0?Math.round(t/i*100):0,a=p>0?Math.round(n/p*100):0,s=o+a;f.set(e,{hash:e,listenerCount:t,loudCount:n,listenerScore:o,loudScore:a,blendedScore:s}),u=Math.max(u,o),d=Math.max(d,a),m=Math.max(m,s)}return{scores:f,maxListenerScore:u,maxLoudScore:d,maxBlendedScore:m}}const c={YELLOW:"#FFB224",GREEN:"#46A758",RED:"#E5484D",GRAY:"#505050"};export{c as L,o as M,a as S,r as c};
import{c as t,r as e,cq as n}from"./index-_WuEOacy.js";const o=t("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),a=t("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);function s(t){if(Array.isArray(t))return t;if("string"==typeof t&&t.startsWith("["))try{const e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}return[]}function r(t,o,a){const r=new Map;for(const n of o){const t=e(n);r.has(t)||r.set(t,n)}const c=new Map,h=new Map;for(const e of t){const t=e.route??e.route_type;if(!n(t))continue;const o=s(e.original_path);if(0===o.length)continue;const i=o.map(t=>t.toUpperCase());if(!e.transmitted&&i.length>=2){const t=i[i.length-2];if(t){const e=r.get(t);e&&h.set(e,(h.get(e)??0)+1)}}if(i.includes(a))for(const e of i){if(e===a)continue;const t=r.get(e);t&&c.set(t,(c.get(t)??0)+1)}}let i=0,f=0;for(const e of o)i=Math.max(i,c.get(e)??0),f=Math.max(f,h.get(e)??0);const p=new Map;let u=0,d=0,m=0;for(const e of o){const t=c.get(e)??0,n=h.get(e)??0,o=i>0?Math.round(t/i*100):0,a=f>0?Math.round(n/f*100):0,s=o+a;p.set(e,{hash:e,listenerCount:t,loudCount:n,listenerScore:o,loudScore:a,blendedScore:s}),u=Math.max(u,o),d=Math.max(d,a),m=Math.max(m,s)}return{scores:p,maxListenerScore:u,maxLoudScore:d,maxBlendedScore:m}}const c={YELLOW:"#FFB224",GREEN:"#46A758",RED:"#E5484D",GRAY:"#505050"};export{c as L,o as M,a as S,r as c};
@@ -1 +1 @@
import{c as a}from"./index-Blr8m74E.js";const e=a("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);export{e as L};
import{c as a}from"./index-_WuEOacy.js";const e=a("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);export{e as L};
@@ -1 +1 @@
import{c}from"./index-Blr8m74E.js";const r=c("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);export{r as M};
import{c}from"./index-_WuEOacy.js";const r=c("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);export{r as M};
@@ -1 +1 @@
import{c as e}from"./index-Blr8m74E.js";const t=e("network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);export{t as N};
import{c as e}from"./index-_WuEOacy.js";const t=e("network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);export{t as N};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{c6 as t}from"./index-Blr8m74E.js";async function e(e,r=10){return t("/api/ping_neighbor",{method:"POST",body:JSON.stringify({target_id:e,timeout:r})})}const r=["Chat Node","Repeater","Room Server","Hybrid Node","Unknown"];async function s(s,o=10){if(o<1||o>60)return{success:!1,error:"Timeout must be 1-60 seconds"};let n;const a=s.match(/^(0x)?([0-9a-fA-F]{1,2})$/);if(a)n=`0x${a[2].padStart(2,"0")}`;else{const e=await async function(e){const s=e.toLowerCase();for(const o of r)try{const e=await t(`/api/adverts_by_contact_type?contact_type=${encodeURIComponent(o)}&hours=168`),r=e.success&&e.data?e.data:e,n=(Array.isArray(r)?r:[]).find(t=>t.node_name&&t.node_name.toLowerCase()===s);if(n&&n.pubkey)return`0x${n.pubkey.substring(0,2)}`}catch{continue}return null}(s);if(!e)return{success:!1,error:`Node '${s}' not found`};n=e}const c=await e(n,o);if(!c.success||!c.data)return{success:!1,error:c.error||"Ping failed"};const i=(u=c.data).rtt_ms>500||u.rssi<-120?"Poor":u.rtt_ms>250||u.rssi<-100?"Fair":u.rtt_ms>100||u.rssi<-80?"Good":"Excellent";var u;return{success:!0,data:{...c.data,quality:i}}}export{s as a,e as p};
import{c7 as t}from"./index-_WuEOacy.js";async function e(e,r=10){return t("/api/ping_neighbor",{method:"POST",body:JSON.stringify({target_id:e,timeout:r})})}const r=["Chat Node","Repeater","Room Server","Hybrid Node","Unknown"];async function s(s,o=10){if(o<1||o>60)return{success:!1,error:"Timeout must be 1-60 seconds"};let n;const a=s.match(/^(0x)?([0-9a-fA-F]{1,2})$/);if(a)n=`0x${a[2].padStart(2,"0")}`;else{const e=await async function(e){const s=e.toLowerCase();for(const o of r)try{const e=await t(`/api/adverts_by_contact_type?contact_type=${encodeURIComponent(o)}&hours=168`),r=e.success&&e.data?e.data:e,n=(Array.isArray(r)?r:[]).find(t=>t.node_name&&t.node_name.toLowerCase()===s);if(n&&n.pubkey)return`0x${n.pubkey.substring(0,2)}`}catch{continue}return null}(s);if(!e)return{success:!1,error:`Node '${s}' not found`};n=e}const c=await e(n,o);if(!c.success||!c.data)return{success:!1,error:c.error||"Ping failed"};const i=(u=c.data).rtt_ms>500||u.rssi<-120?"Poor":u.rtt_ms>250||u.rssi<-100?"Fair":u.rtt_ms>100||u.rssi<-80?"Good":"Excellent";var u;return{success:!0,data:{...c.data,quality:i}}}export{s as a,e as p};
@@ -1 +1 @@
import{c as a}from"./index-Blr8m74E.js";const e=a("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);export{e as R};
import{c as a}from"./index-_WuEOacy.js";const e=a("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);export{e as R};
@@ -1 +1 @@
import{c as y}from"./index-Blr8m74E.js";const a=y("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),e=y("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]),l=y("route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);export{a as H,e as L,l as R};
import{c as y}from"./index-_WuEOacy.js";const a=y("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),e=y("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]),l=y("route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);export{a as H,e as L,l as R};
@@ -1 +1 @@
import{c}from"./index-Blr8m74E.js";const e=c("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);export{e as S};
import{c}from"./index-_WuEOacy.js";const e=c("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);export{e as S};
@@ -1 +1 @@
import{c}from"./index-Blr8m74E.js";const r=c("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]),e=c("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);export{r as S,e as T};
import{c}from"./index-_WuEOacy.js";const r=c("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]),e=c("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);export{r as S,e as T};
@@ -1 +1 @@
import{c as a}from"./index-Blr8m74E.js";const e=a("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);export{e as T};
import{c as a}from"./index-_WuEOacy.js";const e=a("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);export{e as T};
@@ -1 +1 @@
import{c as a}from"./index-Blr8m74E.js";const e=a("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),s=a("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);export{e as F,s as U};
import{c as a}from"./index-_WuEOacy.js";const e=a("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),s=a("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);export{e as F,s as U};
+2 -2
View File
@@ -39,10 +39,10 @@
--font-data: 'JetBrains Mono', 'SF Mono', Monaco, monospace;
}
</style>
<script type="module" crossorigin src="/assets/index-Blr8m74E.js"></script>
<script type="module" crossorigin src="/assets/index-_WuEOacy.js"></script>
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BKIq8k5U.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-core-D1aqi_5O.js">
<link rel="stylesheet" crossorigin href="/assets/index-Cxteu0F3.css">
<link rel="stylesheet" crossorigin href="/assets/index-B4-wugIc.css">
</head>
<body>
<div id="root"></div>
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "pymc_console",
"version": "0.9.217",
"version": "0.9.218",
"description": "Vite + React Dashboard for pyMC_Repeater",
"private": true,
"type": "module",