Sync build v0.9.169

Automated sync from private repository.
Commit: af34a4007730703b7bd2ac344afbf883c190af34
This commit is contained in:
GitHub Actions Bot
2026-01-21 22:25:38 +00:00
parent a154c173b0
commit 126853f033
19 changed files with 21 additions and 21 deletions
+1 -1
View File
@@ -1 +1 @@
0.9.168
0.9.169
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{r as e,j as s,F as a,aZ as t,a_ as r}from"./vendor-react-DtVWNgeu.js";import{c as l}from"./recharts-C9LxPobD.js";import{ab as i,ac as c,b as n,ad as o,r as m,aa as x,ae as d}from"./index-BIsccma_.js";import{u as h}from"./usePolling-DXhhvgB-.js";import{P as p,b as j,a as g,c as u,L as v}from"./PageLayout-CG02PCA-.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const f=e.memo(function({log:e}){return s.jsx("div",{className:"p-3 rounded-2xl bg-white/[0.02] hover:bg-white/[0.04] transition-colors",children:s.jsxs("div",{className:"flex items-baseline gap-3",children:[s.jsx("span",{className:l("type-data-sm w-14 shrink-0",d(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:a}){return s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:l("type-data-sm",e?"text-accent-tertiary":"text-accent-primary"),children:e?"DEBUG":"INFO"}),s.jsx("button",{onClick:a,className:l("relative w-10 h-5 rounded-full transition-colors duration-200",e?"bg-accent-tertiary":"bg-accent-primary"),role:"switch","aria-checked":e,children:s.jsx("span",{className:l("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 d=i(),N=c(),b=n(),y=o(),k=m(),[D,L]=e.useState(!1),P=e.useCallback(()=>{L(e=>!e)},[]),C=D?d:d.filter(e=>"DEBUG"!==e.level);return h(y,x.logs,b),s.jsxs(p,{children:[s.jsx(j,{title:"System Logs",icon:s.jsx(a,{}),controls:s.jsx(w,{showDebug:D,onToggle:P})}),s.jsxs(g,{noPadding:!0,children:[s.jsx(u,{listHeader:!0,icon:s.jsx(a,{className:"icon-sm"}),title:"Log Entries",actions:s.jsx("button",{onClick:()=>k(!b),className:l("transition-colors",b?"text-signal-critical hover:text-signal-critical/80":"text-accent-primary hover:text-accent-primary/80 animate-pulse-slow"),title:b?"Pause":"Resume",children:b?s.jsx(t,{className:"w-5 h-5"}):s.jsx(r,{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:N&&0===d.length?s.jsx(v,{count:10}):0===C.length?s.jsx("div",{className:"text-center py-12 text-text-muted",children:0===d.length?"No logs available":"No logs match selected filters"}):C.map((e,a)=>s.jsx(f,{log:e},`${e.timestamp}-${a}`))})]})]})}export{N as default};
import{r as e,j as s,F as a,aZ as t,a_ as r}from"./vendor-react-DtVWNgeu.js";import{c as l}from"./recharts-C9LxPobD.js";import{ab as i,ac as c,b as n,ad as o,r as m,aa as x,ae as d}from"./index-Bmit1I8S.js";import{u as h}from"./usePolling-DXhhvgB-.js";import{P as p,b as j,a as g,c as u,L as v}from"./PageLayout-CG02PCA-.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const f=e.memo(function({log:e}){return s.jsx("div",{className:"p-3 rounded-2xl bg-white/[0.02] hover:bg-white/[0.04] transition-colors",children:s.jsxs("div",{className:"flex items-baseline gap-3",children:[s.jsx("span",{className:l("type-data-sm w-14 shrink-0",d(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:a}){return s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:l("type-data-sm",e?"text-accent-tertiary":"text-accent-primary"),children:e?"DEBUG":"INFO"}),s.jsx("button",{onClick:a,className:l("relative w-10 h-5 rounded-full transition-colors duration-200",e?"bg-accent-tertiary":"bg-accent-primary"),role:"switch","aria-checked":e,children:s.jsx("span",{className:l("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 d=i(),N=c(),b=n(),y=o(),k=m(),[D,L]=e.useState(!1),P=e.useCallback(()=>{L(e=>!e)},[]),C=D?d:d.filter(e=>"DEBUG"!==e.level);return h(y,x.logs,b),s.jsxs(p,{children:[s.jsx(j,{title:"System Logs",icon:s.jsx(a,{}),controls:s.jsx(w,{showDebug:D,onToggle:P})}),s.jsxs(g,{noPadding:!0,children:[s.jsx(u,{listHeader:!0,icon:s.jsx(a,{className:"icon-sm"}),title:"Log Entries",actions:s.jsx("button",{onClick:()=>k(!b),className:l("transition-colors",b?"text-signal-critical hover:text-signal-critical/80":"text-accent-primary hover:text-accent-primary/80 animate-pulse-slow"),title:b?"Pause":"Resume",children:b?s.jsx(t,{className:"w-5 h-5"}):s.jsx(r,{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:N&&0===d.length?s.jsx(v,{count:10}):0===C.length?s.jsx("div",{className:"text-center py-12 text-text-muted",children:0===d.length?"No logs available":"No logs match selected filters"}):C.map((e,a)=>s.jsx(f,{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
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{d as t,as as e}from"./index-BIsccma_.js";function o(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 n(n,r,s){const a=new Map;for(const e of r){const o=t(e);a.has(o)||a.set(o,e)}const c=new Map,i=new Map;for(const t of n){const n=t.route??t.route_type;if(!e(n))continue;const r=o(t.original_path);if(0===r.length)continue;const f=r.map(t=>t.toUpperCase());if(!t.transmitted&&f.length>=2){const t=f[f.length-2];if(t){const e=a.get(t);e&&i.set(e,(i.get(e)??0)+1)}}if(f.includes(s))for(const t of f){if(t===s)continue;const e=a.get(t);e&&c.set(e,(c.get(e)??0)+1)}}let f=0,u=0;for(const t of r)f=Math.max(f,c.get(t)??0),u=Math.max(u,i.get(t)??0);const h=new Map;let d=0,g=0,l=0;for(const t of r){const e=c.get(t)??0,o=i.get(t)??0,n=f>0?Math.round(e/f*100):0,r=u>0?Math.round(o/u*100):0,s=n+r;h.set(t,{hash:t,listenerCount:e,loudCount:o,listenerScore:n,loudScore:r,blendedScore:s}),d=Math.max(d,n),g=Math.max(g,r),l=Math.max(l,s)}return{scores:h,maxListenerScore:d,maxLoudScore:g,maxBlendedScore:l}}const r={YELLOW:"#FBBF24",GREEN:"#719872",RED:"#E12672",GRAY:"#505050"};export{r as L,n as c};
import{d as t,as as e}from"./index-Bmit1I8S.js";function o(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 n(n,r,s){const a=new Map;for(const e of r){const o=t(e);a.has(o)||a.set(o,e)}const c=new Map,i=new Map;for(const t of n){const n=t.route??t.route_type;if(!e(n))continue;const r=o(t.original_path);if(0===r.length)continue;const f=r.map(t=>t.toUpperCase());if(!t.transmitted&&f.length>=2){const t=f[f.length-2];if(t){const e=a.get(t);e&&i.set(e,(i.get(e)??0)+1)}}if(f.includes(s))for(const t of f){if(t===s)continue;const e=a.get(t);e&&c.set(e,(c.get(e)??0)+1)}}let f=0,u=0;for(const t of r)f=Math.max(f,c.get(t)??0),u=Math.max(u,i.get(t)??0);const h=new Map;let d=0,g=0,l=0;for(const t of r){const e=c.get(t)??0,o=i.get(t)??0,n=f>0?Math.round(e/f*100):0,r=u>0?Math.round(o/u*100):0,s=n+r;h.set(t,{hash:t,listenerCount:e,loudCount:o,listenerScore:n,loudScore:r,blendedScore:s}),d=Math.max(d,n),g=Math.max(g,r),l=Math.max(l,s)}return{scores:h,maxListenerScore:d,maxLoudScore:g,maxBlendedScore:l}}const r={YELLOW:"#FBBF24",GREEN:"#719872",RED:"#E12672",GRAY:"#505050"};export{r as L,n as c};
@@ -1 +1 @@
import{al as t}from"./index-BIsccma_.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{al as t}from"./index-Bmit1I8S.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};
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -39,7 +39,7 @@
--font-data: 'JetBrains Mono', 'SF Mono', Monaco, monospace;
}
</style>
<script type="module" crossorigin src="/assets/index-BIsccma_.js"></script>
<script type="module" crossorigin src="/assets/index-Bmit1I8S.js"></script>
<link rel="modulepreload" crossorigin href="/assets/vendor-core-WoOfkQwm.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-react-DtVWNgeu.js">
<link rel="stylesheet" crossorigin href="/assets/index-BvCAJWnK.css">
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "pymc_console",
"version": "0.9.168",
"version": "0.9.169",
"description": "Vite + React Dashboard for pyMC_Repeater",
"private": true,
"type": "module",