af360 0.1.6 → 0.1.13
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/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +92 -92
- package/dist/.next/app-path-routes-manifest.json +18 -18
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +39 -39
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +3 -3
- package/dist/.next/server/app/ahead/page.js +1 -1
- package/dist/.next/server/app/ahead/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/ahead.html +1 -1
- package/dist/.next/server/app/ahead.rsc +4 -4
- package/dist/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/card/route.js +1 -1
- package/dist/.next/server/app/api/card/route.js.nft.json +1 -1
- package/dist/.next/server/app/api/card/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/check/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/config/route.js +1 -1
- package/dist/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/connectors/github/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/consent/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/context/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/discover/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/expiry/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/first-light/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/handoff/route.js +1 -1
- package/dist/.next/server/app/api/handoff/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/incidents/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/insights/route.js +1 -1
- package/dist/.next/server/app/api/insights/route.js.nft.json +1 -1
- package/dist/.next/server/app/api/insights/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/log/route.js +1 -1
- package/dist/.next/server/app/api/log/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/pulse/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/radar/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/report/route.js +1 -1
- package/dist/.next/server/app/api/report/route.js.nft.json +1 -1
- package/dist/.next/server/app/api/report/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/services/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/status/route.js +1 -1
- package/dist/.next/server/app/api/status/route.js.nft.json +1 -1
- package/dist/.next/server/app/api/status/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/connections/page.js +1 -1
- package/dist/.next/server/app/connections/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/connections.html +1 -1
- package/dist/.next/server/app/connections.rsc +4 -4
- package/dist/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/dashboard.html +1 -1
- package/dist/.next/server/app/dashboard.rsc +3 -3
- package/dist/.next/server/app/discoveries/page.js +2 -2
- package/dist/.next/server/app/discoveries/page.js.nft.json +1 -1
- package/dist/.next/server/app/discoveries/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/discoveries.html +1 -1
- package/dist/.next/server/app/discoveries.rsc +4 -4
- package/dist/.next/server/app/expiry/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/expiry.html +1 -1
- package/dist/.next/server/app/expiry.rsc +3 -3
- package/dist/.next/server/app/fleet/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/fleet.html +1 -1
- package/dist/.next/server/app/fleet.rsc +3 -3
- package/dist/.next/server/app/home/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/home.html +1 -1
- package/dist/.next/server/app/home.rsc +3 -3
- package/dist/.next/server/app/legal/privacy/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/legal/terms/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/log/page.js +1 -1
- package/dist/.next/server/app/log/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/log.html +1 -1
- package/dist/.next/server/app/log.rsc +4 -4
- package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/projects/page.js +1 -1
- package/dist/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/projects.html +1 -1
- package/dist/.next/server/app/projects.rsc +4 -4
- package/dist/.next/server/app/radar/page.js +2 -2
- package/dist/.next/server/app/radar/page.js.nft.json +1 -1
- package/dist/.next/server/app/radar/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/radar.html +1 -1
- package/dist/.next/server/app/radar.rsc +4 -4
- package/dist/.next/server/app/report/page.js +1 -1
- package/dist/.next/server/app/report/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/report.html +1 -1
- package/dist/.next/server/app/report.rsc +4 -4
- package/dist/.next/server/app/settings/page.js +2 -2
- package/dist/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/settings.html +1 -1
- package/dist/.next/server/app/settings.rsc +4 -4
- package/dist/.next/server/app/sites/page.js +1 -1
- package/dist/.next/server/app/sites/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/sites.html +1 -1
- package/dist/.next/server/app/sites.rsc +4 -4
- package/dist/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/welcome.html +1 -1
- package/dist/.next/server/app/welcome.rsc +4 -4
- package/dist/.next/server/app-paths-manifest.json +18 -18
- package/dist/.next/server/chunks/1155.js +1 -0
- package/dist/.next/server/chunks/2346.js +1 -1
- package/dist/.next/server/chunks/2465.js +1 -1
- package/dist/.next/server/chunks/2817.js +1 -1
- package/dist/.next/server/chunks/4134.js +1 -1
- package/dist/.next/server/chunks/7511.js +1 -1
- package/dist/.next/server/chunks/876.js +1 -0
- package/dist/.next/server/chunks/9170.js +1 -1
- package/dist/.next/server/middleware-manifest.json +1 -1
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/static/chunks/1681-b233404f9ec2fc2e.js +1 -0
- package/dist/.next/static/chunks/3192-6b341d547a49fa85.js +1 -0
- package/dist/.next/static/chunks/5623-ec4f1a6f7695d8d1.js +1 -0
- package/dist/.next/static/chunks/7897-6e6c509aea495560.js +1 -0
- package/dist/.next/static/chunks/app/ahead/page-e72bed448dd40bd5.js +1 -0
- package/dist/.next/static/chunks/app/connections/page-5d6cae02e6f2b49a.js +1 -0
- package/dist/.next/static/chunks/app/discoveries/page-52696e6ee0c8d3d5.js +1 -0
- package/dist/.next/static/chunks/app/error-37987420de14c10c.js +1 -0
- package/dist/.next/static/chunks/app/log/page-45b4cfd8f1a29d09.js +1 -0
- package/dist/.next/static/chunks/app/projects/page-75a41d4a90675d93.js +1 -0
- package/dist/.next/static/chunks/app/radar/page-4b4aad549dffcd3a.js +1 -0
- package/dist/.next/static/chunks/app/report/page-145496e8f0d5bc86.js +1 -0
- package/dist/.next/static/chunks/app/settings/page-a38c457b7c57567b.js +1 -0
- package/dist/.next/static/chunks/app/sites/page-96a7dcf3c1e9aa19.js +1 -0
- package/dist/.next/static/css/94d302c686de7e23.css +1 -0
- package/dist/build-id.json +134 -134
- package/dist/package.json +1 -1
- package/dist/shell/bin/af360-bridge.exe +0 -0
- package/lib/mcpActivity.mjs +318 -23
- package/package.json +1 -1
- package/shell/bin/af360-bridge.exe +0 -0
- package/dist/.next/server/chunks/8748.js +0 -1
- package/dist/.next/server/chunks/9601.js +0 -1
- package/dist/.next/static/chunks/3192-3df9f9fedb9e38b1.js +0 -1
- package/dist/.next/static/chunks/5449-42f9c47cf519229a.js +0 -1
- package/dist/.next/static/chunks/7482-8061a087c022a160.js +0 -1
- package/dist/.next/static/chunks/7897-f8f2f8f462a8bbed.js +0 -1
- package/dist/.next/static/chunks/app/ahead/page-2d37c636630d12e7.js +0 -1
- package/dist/.next/static/chunks/app/connections/page-7e0dbe13ce939fc9.js +0 -1
- package/dist/.next/static/chunks/app/discoveries/page-0ac8bd1bf0178837.js +0 -1
- package/dist/.next/static/chunks/app/error-1b4c20b17d1105f5.js +0 -1
- package/dist/.next/static/chunks/app/log/page-e54cb98e7adc6b08.js +0 -1
- package/dist/.next/static/chunks/app/projects/page-bc124fc3f5f66391.js +0 -1
- package/dist/.next/static/chunks/app/radar/page-24540a7c154a41b8.js +0 -1
- package/dist/.next/static/chunks/app/report/page-f1ede34a209ac047.js +0 -1
- package/dist/.next/static/chunks/app/settings/page-3ca6b23c69637aab.js +0 -1
- package/dist/.next/static/chunks/app/sites/page-7becc8e4436c5016.js +0 -1
- package/dist/.next/static/css/f0c4f79b3d7295b1.css +0 -1
- /package/dist/.next/static/{71f4c38dc0c65050446da → da1c2e66999c334d135d9}/_buildManifest.js +0 -0
- /package/dist/.next/static/{71f4c38dc0c65050446da → da1c2e66999c334d135d9}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893],{5657:(e,s,n)=>{"use strict";n.r(s),n.d(s,{default:()=>x});var r=n(5155),c=n(2115),a=n(7064),l=n(6660),t=n(7897),i=n(5163),o=n(436),p=n(5310),j=n(3034),d=n(2696),h=n(5834),m=n(1551);function x(){var e,s;let n=(0,l.x)(),[x,g]=(0,c.useState)(null),{projects:u,radar:v,changes:N,attention:y}=n,{requestIgnore:I,showToast:k,overlays:U}=(0,t.Wj)(n),f=null!=(s=n.views.projects)?s:"cards",b=(0,c.useRef)(null),w=(0,m.$c)(null==(e=n.cfg)?void 0:e.lang),T=(e,s)=>(0,m.tr)(w,e,s),_="ar"===w,C=e=>(0,i.YV)(y,e),R=e=>"red"===e?2:+("amber"===e),E=[...u].sort((e,s)=>{let r=Number(n.isPinned((0,t.yn)(s)))-Number(n.isPinned((0,t.yn)(e)));return 0!==r?r:R(C((0,t.yn)(s)))-R(C((0,t.yn)(e)))}),V=E.some(e=>null===C((0,t.yn)(e))),P=E.filter(e=>{let s=C((0,t.yn)(e));return null!==s&&"clean"!==s}).length,q=e=>g(s=>s===e?null:e);return(0,r.jsxs)(a.Ay,{active:"/projects",cockpit:n,children:[(0,r.jsxs)("div",{className:"pagebar",children:[(0,r.jsx)("h1",{children:(0,r.jsx)(p.T,{k:"room.projects",en:o.UI.projects.title})}),(0,r.jsx)("span",{className:"purpose",children:(0,r.jsx)(p.T,{k:"projects.purpose",en:o.UI.projects.purpose})})]}),(0,r.jsx)("div",{className:"radar-verdict",children:(0,r.jsx)(d.HE,{cockpit:n})}),v?0===u.length?(0,r.jsxs)("div",{className:"empty",children:[(0,r.jsx)("p",{className:"invite",children:T("projects.emptyInvite",o.UI.projects.emptyInvite)}),(0,r.jsx)("p",{children:T("projects.emptyLine",o.UI.projects.emptyLine)}),(0,r.jsx)("a",{className:"btn primary",href:"/radar",children:T("btn.goRadar",o.UI.projects.goRadar)})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"sec",children:[(0,r.jsx)("h2",{children:(0,r.jsx)(p.T,{k:"sec.projects",en:o.UI.radar.projects})}),(0,r.jsxs)("span",{className:"meta",children:[(0,r.jsx)(j.V,{n:u.length})," \xb7"," ",V?(0,r.jsx)(h.h,{children:T("common.checking",o.UI.common.checking)}):P>0?_?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(j.V,{n:P})," ",T("projects.needingTail","")]}):o.UI.projects.needing(P):T("projects.allClean",o.UI.projects.allClean)]}),(0,r.jsx)("div",{className:"tools",children:(0,r.jsx)(t.aA,{view:f,onChange:e=>n.setView("projects",e)})})]}),"cards"===f?(0,r.jsx)("div",{className:"grid",ref:b,children:E.map(e=>(0,r.jsx)(t.Uj,{p:e,tone:C((0,t.yn)(e)),cockpit:n,change:N[(0,t.yn)(e)],open:x===e.path,onToggle:()=>q(e.path),onIgnoreRequest:I,onToast:k},e.path))}):(0,r.jsx)("div",{className:"irows",ref:b,children:E.map(e=>(0,r.jsx)(t.ou,{p:e,tone:C((0,t.yn)(e)),cockpit:n,change:N[(0,t.yn)(e)],open:x===e.path,onToggle:()=>q(e.path),onIgnoreRequest:I},e.path))})]}):(0,r.jsxs)("div",{className:"sweep-wrap",children:[(0,r.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,r.jsx)("span",{children:(0,r.jsx)(h.h,{children:T("common.scanning",o.UI.common.scanning)})})]}),U]})}},6068:(e,s,n)=>{Promise.resolve().then(n.bind(n,5657))}},e=>{e.O(0,[3192,5449,7897,8441,1255,7358],()=>e(e.s=6068)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2305],{1601:(e,n,a)=>{"use strict";a.r(n),a.d(n,{default:()=>q});var s=a(5155),t=a(2115),r=a(7064),i=a(4097),l=a(7482),o=a(436),c=a(5310),d=a(1551),h=a(8706),p=a(5964),m=a(993),g=a(8261),x=a(7470),u=a(4576),j=a(9378),f=a(9129),w=a(797);function b(e){let n=e.filter(Boolean),a=n.slice(-2).join("/");return n.length>2?"…/"+a:a}function k(e){let n=e;return(n=(n=String(n=(0,p.dK)(n)).replace(/[A-Za-z0-9._%+-]+@([A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*\.[A-Za-z]{2,})/g,(e,n)=>"".concat("[email hidden]","@").concat(n))).replace(/[A-Za-z]:\\[^\s"'`,;]+/g,e=>b(e.split("\\")))).replace(/(^|\s)(\/(?:home|Users)\/[^\s"'`,;]+)/g,(e,n,a)=>n+b(a.split("/")))}let v={title:"export.title",intro:"diag.intro",safe:"diag.safe",needs:"sec.needsYou",worth:"export.worth",why:"export.why",fix:"export.fix",details:"report.detailsLabel",noNeeds:"export.noNeeds",noWorth:"export.noWorth",foot:"export.foot"},y={title:"Estate check",intro:"A snapshot from ".concat(u.qt," of what is worth your attention right now. Folder paths are shortened and anything shaped like a password or key is hidden, so this file is safe to hand to someone or paste into an AI assistant."),safe:"Folder paths shortened, anything shaped like a password or key hidden, machine name never included.",needs:"Needs attention",worth:"Worth doing",why:"Why it matters",fix:"Suggested fix",details:"Details",noNeeds:"Nothing needs attention right now.",noWorth:"No open discoveries right now.",foot:"Made with ".concat(u.qt," by ").concat(u.rM," - it runs on your machine, and nothing here left it until you chose to share this file.")};function N(e){return"ar"!==e?"en":Object.values(v).every(e=>void 0!==d.AR[e])?"ar":"en"}function I(e){let n=N(e),a={};for(let[e,t]of Object.entries(v)){var s;a[e]="ar"===n&&null!=(s=d.AR[t])?s:y[e]}return a}function U(e,n,a){return"ar"===e&&n?(0,h.DJ)(n,e=>d.AR[e]):a}function A(e,n){var a,s,t;return{needs:(null!=(s=null==(a=e.attention)?void 0:a.items)?s:[]).filter(e=>!e.handled).map(e=>{var a;return{title:k(U(n,e.whatP,e.what)),why:e.why?k(U(n,e.whyP,e.why)):void 0,fixes:(null!=(a=e.steps)?a:[]).map((a,s)=>{var t;return k(U(n,null==(t=e.stepsP)?void 0:t[s],a))})}}),worth:(null!=(t=e.insights)?t:[]).map(e=>{var a;return{title:k(U(n,e.verdictP,e.verdict)),why:e.why?k((0,m.XF)(e.why,e.quoted)):void 0,fixes:(null!=(a=e.steps)?a:[]).map(k),cat:e.cat}})}}function C(e,n){if(!e)return null;let a=N(n),s=null===e.since?"":(0,x.OL)(e.since);return(0,j.lz)(e,(e,n)=>{var s;return"ar"===a&&null!=(s=d.AR[e])?s:n},s)}function T(e){let n=(0,g.X2)(e.attention,e.projects);if(!n)return null;let a=(0,g.sx)(n),s=(0,g.Bx)(n);return"".concat(a.headline.en," ").concat(a.under.en).concat(s?" ".concat(s.en):"")}function P(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function F(e,n,a){let s=new Blob([a],{type:n}),t=URL.createObjectURL(s),r=document.createElement("a");r.download=e,r.href=t,r.click(),setTimeout(()=>URL.revokeObjectURL(t),2e3)}function S(e){let{cockpit:n,onClose:a}=e,[r]=(0,t.useState)(()=>Date.now()),[i,l]=(0,t.useState)(!1),d=(0,c.kj)(),h=(0,c.cO)(),p=(0,c.uU)(),{delta:m}=(0,f.K)(n),g=function(e,n){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"en",s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,{needs:t,worth:r}=A(e,N(a)),i=I(a),l=(0,x.OL)(n),o=[];o.push("# ".concat(i.title," - ").concat(l)),o.push(""),o.push(i.intro),o.push("");let c=C(s,a);c&&(o.push(c),o.push(""));let d=T(e);return d&&(o.push(d),o.push("")),o.push("Summary: ".concat(t.length," thing").concat(1===t.length?"":"s"," need").concat(1===t.length?"s":""," attention, ").concat(r.length," discover").concat(1===r.length?"y":"ies"," worth a look.")),o.push(""),o.push("## ".concat(i.needs," (").concat(t.length,")")),o.push(""),0===t.length&&o.push(i.noNeeds),t.forEach((e,n)=>{o.push("### ".concat(n+1,". ").concat(e.title)),e.why&&o.push("- ".concat(i.why,": ").concat(e.why)),e.fixes.length>0&&(o.push("- ".concat(i.fix,":")),e.fixes.forEach(e=>o.push(" - ".concat(e)))),o.push("")}),o.push("## ".concat(i.worth," (").concat(r.length,")")),o.push(""),0===r.length&&o.push(i.noWorth),r.forEach(e=>{o.push("### ".concat(e.cat?"`".concat(e.cat,"` "):"").concat(e.title)),e.why&&o.push("- ".concat(i.why,": ").concat(e.why)),e.fixes.length>0&&(o.push("- ".concat(i.fix,":")),e.fixes.forEach(e=>o.push(" - ".concat(e)))),o.push("")}),o.push("---"),o.push(i.foot),o.join("\n")}(n,r,p,m),j=(0,x.rq)(r),b=async()=>{try{await navigator.clipboard.writeText(g),l(!0),setTimeout(()=>l(!1),2e3)}catch(e){}};return(0,s.jsx)("div",{className:"confirm-overlay",role:"dialog","aria-modal":"true","aria-label":d("diag.dialogAria",o.UI.diag.dialogAria),onClick:a,children:(0,s.jsxs)("div",{className:"diag",onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("div",{className:"diag-head",children:[(0,s.jsx)("h2",{children:d("diag.title",o.UI.diag.title)}),(0,s.jsx)("p",{children:d("diag.intro",o.UI.diag.intro)}),(0,s.jsxs)("div",{className:"diag-safe",children:[(0,s.jsx)("i",{}),d("diag.safe",o.UI.diag.safe)]})]}),(0,s.jsx)("div",{className:"diag-preview",children:(0,s.jsx)("pre",{children:g})}),(0,s.jsxs)("p",{className:"diag-hint",children:[(0,s.jsx)("b",{children:d("diag.copyForAi",o.UI.diag.copyForAi)})," ",d("diag.hintText",o.UI.diag.hintText)," \xb7 ",(0,s.jsx)("b",{children:d("diag.downloadText",o.UI.diag.downloadText)})," ",d("diag.hintFile",o.UI.diag.hintFile)," \xb7",(0,s.jsxs)("b",{children:[" ",d("diag.downloadPage",o.UI.diag.downloadPage)]})," ",d("diag.hintPage",o.UI.diag.hintPage),"."]}),(0,s.jsxs)("div",{className:"diag-acts",children:[(0,s.jsx)("button",{className:"btn primary",...(0,w.uN)(h.markdown),onClick:()=>F("estate-check-".concat(j,".md"),"text/markdown",g),children:d("diag.downloadText",o.UI.diag.downloadText)}),(0,s.jsx)("button",{className:"btn",onClick:()=>F("estate-check-".concat(j,".html"),"text/html",function(e,n){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"en",s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,{needs:t,worth:r}=A(e,N(a)),i=I(a),l="ar"===N(a),o=(0,x.OL)(n);return'<!doctype html><html lang="'.concat(l?"ar":"en",'" dir="').concat(l?"rtl":"ltr",'"><head><meta charset="utf-8">\n<meta name="viewport" content="width=device-width, initial-scale=1">\n<title>').concat(P(i.title)," - ").concat(P(o),"</title>\n<style>\n :root { color-scheme: dark; }\n * { box-sizing: border-box; }\n body { margin: 0; background: #0A0D14; color: #E7ECF4; font: 15px/1.55 -apple-system, Segoe UI, system-ui, sans-serif; }\n main { max-width: 720px; margin: 0 auto; padding: 40px 24px 64px; }\n /* the masthead line, and the wordmark it carries */\n .brandline { font-weight: 800; font-size: 18px; margin: 0 0 14px; letter-spacing: .5px; }\n .brandline .maker { color: #9AA6BC; font-weight: 600; font-size: 14px; }\n footer .brand { font-weight: 700; }\n h1 { font-size: 26px; margin: 0 0 4px; }\n .sub { color: #9AA6BC; font-size: 14px; margin: 0 0 6px; }\n .safe { color: #3ECF8E; font-size: 13px; margin: 0 0 28px; }\n /* what moved since the last check - the page's own dim, no new colour */\n .since { color: #E7ECF4; font-size: 14px; margin: 0 0 10px; unicode-bidi: plaintext; }\n /* what a dead disk would cost, in the page's own amber, no new colour */\n .radius { color: #E8B23D; font-size: 14.5px; font-weight: 600; margin: 0 0 18px; unicode-bidi: plaintext; }\n h2 { font-size: 17px; margin: 30px 0 12px; padding-bottom: 8px; border-bottom: 1px solid rgba(148,163,214,.2); }\n .f { background: #0F1420; border: 1px solid rgba(148,163,214,.14); border-radius: 12px; padding: 14px 16px; margin: 0 0 10px; }\n h3 { font-size: 15px; margin: 0 0 6px; }\n .why { color: #9AA6BC; font-size: 13.5px; margin: 0 0 8px; }\n .lbl { color: #5C6880; font-size: 12px; text-transform: uppercase; letter-spacing: .1em; margin: 0 0 4px; }\n ul { margin: 0; padding-inline-start: 20px; } li { font-size: 13.5px; margin: 2px 0; }\n /* the estate is English inside an Arabic page: isolated, never reordered */\n h3, .fact, li, .why { unicode-bidi: plaintext; }\n .wkrow .cat { unicode-bidi: isolate; direction: ltr; }\n .brand { direction: ltr; unicode-bidi: isolate; display: inline-block; }\n .empty { color: #9AA6BC; }\n /* one fact per row: category, fact, why, and the depth behind Details */\n .wk { border: 1px solid rgba(148,163,214,.14); border-radius: 12px; overflow: hidden; }\n .wkrow { display: flex; align-items: baseline; gap: 12px; padding: 10px 14px; background: #0F1420; flex-wrap: wrap; }\n .wkrow + .wkrow { border-top: 1px solid rgba(148,163,214,.14); }\n .wkrow .cat { font: 500 11px ui-monospace, Consolas, monospace; letter-spacing: .12em; text-transform: uppercase; color: #8FB8FF; width: 96px; flex-shrink: 0; }\n .wkrow .fact { font-size: 13.5px; flex: 1 1 260px; min-width: 0; }\n .wkrow .why { color: #5C6880; font-size: 12.5px; }\n .wkrow details { flex-basis: 100%; margin-top: 6px; }\n .wkrow summary { cursor: pointer; color: #9AA6BC; font-size: 12.5px; }\n footer { margin-top: 32px; color: #5C6880; font-size: 12.5px; border-top: 1px solid rgba(148,163,214,.14); padding-top: 14px; }\n /* printed, every disclosure is open: a PDF cannot be clicked */\n @media print { body { background: #fff; color: #141A26; } .f, .wkrow { background: #f6f8fc; } details { display: block; } details > *:not(summary) { display: revert; } }\n</style></head>\n<body><main>\n <p class=\"brandline\">").concat((0,u.pl)("#4D7FFF"),' <span class="maker">by ').concat(P(u.rM),"</span></p>\n <h1>").concat(P(i.title),'</h1>\n <p class="sub">').concat(P(o)," \xb7 ").concat(t.length," need").concat(1===t.length?"s":""," attention, ").concat(r.length," worth a look</p>\n ").concat(C(s,a)?'<p class="since">'.concat(P(C(s,a)),"</p>"):"","\n ").concat(T(e)?'<p class="radius">'.concat(P(T(e)),"</p>"):"",'\n <p class="safe">').concat(P(i.safe),"</p>\n ").concat(((e,n,a,s)=>{if(0===n.length)return"<h2>".concat(P(e),'</h2><p class="empty">').concat(P(s),"</p>");let t=n.map((e,n)=>'\n <div class="f">\n <h3>'.concat(a?"".concat(n+1,". "):"").concat(P(e.title),"</h3>\n ").concat(e.why?'<p class="why">'.concat(P(e.why),"</p>"):"","\n ").concat(e.fixes.length?'<p class="lbl">'.concat(P(i.fix),"</p><ul>").concat(e.fixes.map(e=>"<li>".concat(P(e),"</li>")).join(""),"</ul>"):"","\n </div>")).join("");return"<h2>".concat(P(e),"</h2>").concat(t)})(i.needs,t,!0,i.noNeeds),"\n ").concat(((e,n,a)=>{if(0===n.length)return"<h2>".concat(P(e),'</h2><p class="empty">').concat(P(a),"</p>");let s=n.map(e=>{var n;return'\n <div class="wkrow">\n <span class="cat">'.concat(P(null!=(n=e.cat)?n:""),'</span>\n <div class="fact">').concat(P(e.title)).concat(e.why?'<span class="why"> - '.concat(P(e.why),"</span>"):"","</div>\n ").concat(e.fixes.length?"<details><summary>".concat(P(i.details),"</summary><ul>").concat(e.fixes.map(e=>"<li>".concat(P(e),"</li>")).join(""),"</ul></details>"):"","\n </div>")}).join("");return"<h2>".concat(P(e),'</h2><div class="wk">').concat(s,"</div>")})(i.worth,r,i.noWorth),"\n <footer>").concat(function(e,n,a){let s=String(e).indexOf(n);return -1===s?String(e):e.slice(0,s)+a+e.slice(s+n.length)}(P(i.foot),u.qt,(0,u.pl)("#4D7FFF")),"</footer>\n</main></body></html>")}(n,r,p,m)),children:d("diag.downloadPage",o.UI.diag.downloadPage)}),(0,s.jsx)("button",{className:"btn",...(0,w.uN)(h.copyEstateReport),onClick:b,children:i?d("btn.copied",o.UI.diag.copied):d("diag.copyForAi",o.UI.diag.copyForAi)}),(0,s.jsx)("button",{className:"btn ghost grow",onClick:a,children:(0,s.jsx)(c.T,{k:"btn.close",en:o.UI.common.close})})]})]})})}var z=a(6660),R=a(7897),E=a(5163),B=a(2696),L=a(23),M=a(2613),D=a(3034),O=a(8106),V=a(6400),W=a(5834);function q(){var e,n,a,h,p,m,g,x,u;let j=(0,z.x)(),[f,b]=(0,t.useState)(null),[k,v]=(0,t.useState)(null),[y,N]=(0,t.useState)(!1),[I,U]=(0,t.useState)(!1),{radar:A,incidents:C,insights:T,insightsMuted:P,insightsPending:F,demo:O,projects:q,urls:_,views:G,collapsed:J,changes:K,attention:X}=j,{requestIgnore:$,showToast:Q,overlays:ee}=(0,R.Wj)(j),en=(0,d.$c)(null==(e=j.cfg)?void 0:e.lang),ea=(e,n)=>(0,d.tr)(en,e,n),es="ar"===en,et=(0,c.qN)(en);(0,t.useEffect)(()=>{let e=Object.keys(K);if(0===e.length)return;let n=setTimeout(()=>j.markSeen(e),12e3);return()=>clearTimeout(n)},[Object.keys(K).join("|")]);let er=e=>b(n=>n===e?null:e),ei=(0,V.yr)(T),el=e=>(0,E.YV)(X,e),eo=null!=(h=G.projects)?h:"cards",ec=null!=(p=G.urls)?p:"cards",ed=e=>"red"===e?2:+("amber"===e),eh=[...q].sort((e,n)=>{let a=Number(j.isPinned((0,R.yn)(n)))-Number(j.isPinned((0,R.yn)(e)));return 0!==a?a:ed(el((0,R.yn)(n)))-ed(el((0,R.yn)(e)))}),ep=[..._].sort((e,n)=>ed(el(n.entry.id))-ed(el(e.entry.id))),em=e=>{var n;return null!=(n=J[e])?n:"ignored"===e||"drawer"===e},eg=(0,t.useRef)(null),ex=(0,t.useRef)(null),eu=(0,R.j4)(eg,eh.length,260,[eo,em("projects"),null!=(m=null==X?void 0:X.items.length)?m:0,y,O]),ej=(0,R.j4)(ex,ep.length,40,[ec,em("sites"),eu,null!=(g=null==X?void 0:X.items.length)?g:0,y,O]),ef=eh.slice(0,eu),ew=eh.slice(eu),eb=ep.slice(0,ej),ek=ep.slice(ej),ev=X?(0,E.Pl)(X):null,ey=!!X&&(0,E.yy)(X)&&!!A,eN=!X||(0,E.yy)(X)?"idle":"INCIDENT"===X.state?"bad":"NEEDS_YOU"===X.state||"SAFETY"===X.state?"":"ok";return(0,s.jsxs)(r.Ay,{active:"/radar",cockpit:j,children:[(0,s.jsxs)("div",{className:"radar-head ".concat(eN),children:[(0,s.jsx)("div",{className:"rh-left",children:(0,s.jsx)("div",{className:"greet",children:function(e){let n=new Date().getHours();return n<5?e("greet.evening","Good evening"):n<12?e("greet.morning","Good morning"):n<17?e("greet.afternoon","Good afternoon"):e("greet.evening","Good evening")}(ea)})}),(0,s.jsx)("div",{className:"rh-right",children:(0,s.jsx)("div",{className:"row1",children:(0,s.jsx)("button",{className:"b",onClick:()=>U(!0),...(0,w.uN)(ea("radar.shareReportTip",o.UI.radar.shareReportTip)),children:(0,s.jsx)(c.T,{k:"btn.shareReport",en:o.UI.radar.shareReport})})})})]}),(0,s.jsx)(B.zU,{cockpit:j,onToast:Q}),!ey&&(0,s.jsxs)("div",{className:"radar-verdict ".concat(eN),children:[(0,s.jsx)("div",{className:"state",children:ev?(0,s.jsx)(c.P,{p:ev.lineP}):(0,s.jsx)(W.h,{children:ea("common.loading",o.UI.common.loading)})}),ev&&(0,s.jsx)("div",{className:"reason",children:(0,s.jsx)(c.P,{p:ev.underP})}),(0,s.jsx)(B.HE,{cockpit:j})]}),(0,s.jsxs)("div",{className:"pagebar",style:{marginBlockStart:4},children:[(0,s.jsx)("h1",{children:(0,s.jsx)(c.T,{k:"room.radar",en:o.UI.radar.title})}),(0,s.jsx)("span",{className:"purpose",children:(0,s.jsx)(c.T,{k:"radar.purpose",en:o.UI.radar.purpose})})]}),O&&(0,s.jsxs)("p",{className:"banner",children:[ea("banner.radarLead",o.UI.radar.bannerLead)," ",(0,s.jsx)("strong",{children:ea("banner.radarStrong",o.UI.radar.bannerStrong)})," ",ea("banner.radarRest",o.UI.radar.bannerRest)," ",(0,s.jsx)("button",{className:"link",onClick:()=>N(!0),children:ea("banner.radarLink",o.UI.radar.bannerLink)})," ",ea("banner.radarTail",o.UI.radar.bannerTail)]}),X&&X.items.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"sec",children:[(0,s.jsx)("h2",{children:(0,s.jsx)(c.T,{k:"sec.needsYou",en:o.UI.radar.needsYou})}),(0,s.jsxs)("span",{className:"meta",children:[(0,s.jsx)(D.V,{n:X.items.length})," \xb7 ",(0,s.jsx)(c.T,{k:"radar.needsYouAlways",en:o.UI.radar.needsYouAlways})]})]}),(0,L.bI)(X).map(e=>(0,s.jsx)(Y,{it:e,cockpit:j,demo:O,onIgnoreRequest:$,onFind:e=>v(e)},e.id))]}),(0,s.jsx)(H,{cockpit:j,collapsed:em("ignored")}),A?0===q.length&&0===_.length?(0,s.jsx)(Z,{cockpit:j}):(0,s.jsxs)(s.Fragment,{children:[q.length>0&&(0,s.jsxs)(s.Fragment,{children:[X&&X.items.length>0&&(0,s.jsx)("div",{className:"secline","aria-hidden":!0}),(0,s.jsxs)("div",{className:"sec",children:[(0,s.jsx)("h2",{children:(0,s.jsx)(c.T,{k:"sec.projects",en:o.UI.radar.projects})}),(0,s.jsxs)("span",{className:"meta",children:[(0,s.jsx)(D.V,{n:q.length})," \xb7 ",(0,s.jsx)(c.T,{k:"radar.projectsMeta",en:o.UI.radar.projectsMeta})]}),(0,s.jsxs)("div",{className:"tools",children:[(0,s.jsx)("button",{className:"b",...(0,w.uN)(et.watch),onClick:()=>N(!y),children:y?(0,s.jsx)(c.T,{k:"btn.close",en:o.UI.common.close}):(0,s.jsx)(c.T,{k:"btn.watchMore",en:o.UI.radar.watchMore})}),(0,s.jsx)(R.aA,{view:eo,onChange:e=>j.setView("projects",e)}),(0,s.jsx)(R.cc,{value:em("projects"),onChange:e=>j.setCollapsed("projects",e)}),(0,s.jsx)("a",{className:"seeall",href:"/projects",children:es?(0,s.jsxs)(s.Fragment,{children:[ea("more.seeAllProjects","")," (",(0,s.jsx)(D.V,{n:q.length}),") ","←"]}):o.UI.radar.seeAllProjects(q.length)})]})]}),y&&(0,s.jsx)("div",{className:"card plain",style:{marginBlockEnd:10},children:(0,s.jsx)(i.A,{watched:null!=(x=null==(n=j.cfg)?void 0:n.roots)?x:[],onChanged:()=>j.refresh(!0)})}),!em("projects")&&(0,s.jsxs)(s.Fragment,{children:["cards"===eo?(0,s.jsx)("div",{className:"grid",ref:eg,children:ef.map(e=>(0,s.jsx)(R.Uj,{p:e,tone:el((0,R.yn)(e)),cockpit:j,change:K[(0,R.yn)(e)],open:f===e.path,onToggle:()=>er(e.path),onIgnoreRequest:$,onToast:Q},e.path))}):(0,s.jsx)("div",{className:"irows",ref:eg,children:ef.map(e=>(0,s.jsx)(R.ou,{p:e,tone:el((0,R.yn)(e)),cockpit:j,change:K[(0,R.yn)(e)],open:f===e.path,onToggle:()=>er(e.path),onIgnoreRequest:$},e.path))}),ew.length>0&&(0,s.jsx)(s.Fragment,{children:(0,s.jsx)("div",{className:"cleanline",children:ew.every(e=>"clean"===el((0,R.yn)(e)))?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"okw",children:"✓"})," ",ew.every(e=>e.hasRemote||e.looksDownloaded)?es?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(D.V,{n:ew.length})," ",ea("more.cleanBacked","")]}):o.UI.radar.moreCleanBacked(ew.length):es?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(D.V,{n:ew.length})," ",ea("more.clean","")]}):o.UI.radar.moreClean(ew.length)]}):es?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(D.V,{n:ew.length})," ",ea("more.projects","")]}):(0,s.jsx)(s.Fragment,{children:o.UI.radar.moreProjects(ew.length)})})})]})]}),_.length>0&&(0,s.jsxs)(s.Fragment,{children:[q.length>0&&(0,s.jsx)("div",{className:"secline","aria-hidden":!0}),(0,s.jsxs)("div",{className:"sec",children:[(0,s.jsx)("h2",{children:(0,s.jsx)(c.T,{k:"sec.sites",en:o.UI.radar.sites})}),(0,s.jsxs)("span",{className:"meta",children:[(0,s.jsx)(D.V,{n:_.length})," \xb7 ",(0,s.jsx)(c.T,{k:"radar.sitesMeta",en:o.UI.radar.sitesMeta})]}),(0,s.jsxs)("div",{className:"tools",children:[(0,s.jsx)(R.aA,{view:ec,onChange:e=>j.setView("urls",e)}),(0,s.jsx)(R.cc,{value:em("sites"),onChange:e=>j.setCollapsed("sites",e)}),(0,s.jsx)("a",{className:"seeall",href:"/sites",children:es?(0,s.jsxs)(s.Fragment,{children:[ea("more.seeAllSites","")," (",(0,s.jsx)(D.V,{n:_.length}),") ","←"]}):o.UI.radar.seeAllSites(_.length)})]})]}),!em("sites")&&(0,s.jsxs)(s.Fragment,{children:["cards"===ec?(0,s.jsx)("div",{className:"grid",ref:ex,children:eb.map(e=>(0,s.jsx)(R.ct,{u:e,tone:el(e.entry.id),cockpit:j,incident:(0,R.G2)(C,e.entry.id),open:f===e.entry.id,onToggle:()=>er(e.entry.id),onIgnoreRequest:$},e.entry.id))}):(0,s.jsx)("div",{className:"irows",ref:ex,children:eb.map(e=>(0,s.jsx)(R.kc,{u:e,tone:el(e.entry.id),cockpit:j,incident:(0,R.G2)(C,e.entry.id),open:f===e.entry.id,onToggle:()=>er(e.entry.id),onIgnoreRequest:$},e.entry.id))}),ek.length>0&&(0,s.jsx)(s.Fragment,{children:(0,s.jsx)("div",{className:"cleanline",children:ek.every(e=>"clean"===el(e.entry.id))?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"okw",children:"✓"})," ",es?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(D.V,{n:ek.length})," ",ea("more.sitesUp","")]}):o.UI.radar.moreSitesUp(ek.length)]}):es?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(D.V,{n:ek.length})," ",ea("more.sites","")]}):(0,s.jsx)(s.Fragment,{children:o.UI.radar.moreSites(ek.length)})})})]})]}),(0,V.ZT)(T).length>0&&(0,s.jsx)(V.LZ,{cockpit:j})]}):(0,s.jsxs)("div",{className:"sweep-wrap",children:[(0,s.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,s.jsx)("span",{children:(0,s.jsx)(W.h,{children:ea("common.scanning",o.UI.common.scanning)})})]}),(null===T||ei.length>0||F>0||P.length>0)&&(0,s.jsxs)(s.Fragment,{children:[(q.length>0||_.length>0||X&&X.items.length>0)&&(0,s.jsx)("div",{className:"secline","aria-hidden":!0}),(0,s.jsxs)("div",{className:"sec",children:[(0,s.jsx)("h2",{children:(0,s.jsx)(c.T,{k:"sec.discoveries",en:o.UI.radar.discoveries})}),(0,s.jsxs)("span",{className:"meta",children:[(0,s.jsx)(D.V,{n:ei.length})," \xb7 ",(0,s.jsx)(c.T,{k:"radar.discoveriesMeta",en:o.UI.radar.discoveriesMeta}),ei.length>3?(0,s.jsxs)(s.Fragment,{children:[" \xb7 ",(0,s.jsx)(c.T,{k:"radar.discoveriesTop3",en:o.UI.radar.discoveriesTop3})]}):null]}),(0,s.jsxs)("div",{className:"tools",children:[(0,s.jsx)(R.cc,{value:em("discoveries"),onChange:e=>j.setCollapsed("discoveries",e),showLabel:o.UI.common.show,hideLabel:o.UI.common.hide,hideKey:"btn.hide"}),(0,s.jsx)("a",{className:"seeall",href:"/discoveries",children:es?(0,s.jsxs)(s.Fragment,{children:[ea("more.seeAllDiscoveries","")," (",(0,s.jsx)(D.V,{n:ei.length}),") ","←"]}):o.UI.radar.seeAll(ei.length)})]})]}),!em("discoveries")&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(M.hf,{done:j.insightsDeepTotal-F,total:j.insightsDeepTotal,working:null===T}),(0,s.jsx)("div",{className:"grid three",children:ei.slice(0,3).map(e=>(0,s.jsx)(l.JF,{d:e},e.id))}),P.length>0&&(0,s.jsx)("div",{className:"disc-more",children:(0,s.jsxs)("span",{className:"m",children:[P.length," muted, named on the Discoveries page"]})})]})]}),k&&(0,s.jsx)("div",{className:"confirm-overlay",role:"dialog","aria-modal":"true",children:(0,s.jsxs)("div",{className:"confirm",style:{maxInlineSize:560},children:[(0,s.jsxs)("p",{children:[(0,s.jsx)("strong",{children:(0,s.jsx)(D.B,{children:function(e){var n;let a=e.split(/[\\/]/).filter(Boolean);return null!=(n=a[a.length-1])?n:e}(k)})})," ",(0,s.jsx)(c.T,{k:"radar.movedTail",en:o.UI.radar.movedTail})]}),(0,s.jsx)(i.A,{watched:null!=(u=null==(a=j.cfg)?void 0:a.roots)?u:[],autoBrowsePath:function(e){let n=e.split(/[\\/]/).filter(Boolean);return n.length>1?n.slice(0,-1).join("\\"):e}(k),replaceRoot:k,onChanged:()=>{v(null),j.refresh(!0)}}),(0,s.jsx)("div",{className:"setup-actions",children:(0,s.jsx)("button",{className:"b q",onClick:()=>v(null),children:(0,s.jsx)(c.T,{k:"btn.cancel",en:o.UI.common.cancel})})})]})}),I&&(0,s.jsx)(S,{cockpit:j,onClose:()=>U(!1)}),ee]})}function Z(e){var n,a;let{cockpit:r}=e,[l,d]=(0,t.useState)(null),h=(0,c.kj)();return(0,c.cO)(),(0,s.jsxs)("div",{className:"empty welcome",children:[(0,s.jsx)("p",{className:"invite",children:h("empty.invite",o.UI.radar.emptyInvite)}),(0,s.jsx)("p",{className:"wl",children:h("empty.line",o.UI.radar.emptyLine)}),(0,s.jsxs)("div",{className:"setup-actions",children:[(0,s.jsx)("button",{className:"btn ".concat("folder"===l?"":"primary"),"aria-pressed":"folder"===l,onClick:()=>d("folder"===l?null:"folder"),children:"folder"===l?h("btn.back",o.UI.radar.emptyBack):h("empty.pickFolder",o.UI.radar.emptyPickFolder)}),(0,s.jsx)("button",{className:"btn ".concat("site"===l?"":"primary"),"aria-pressed":"site"===l,onClick:()=>d("site"===l?null:"site"),children:"site"===l?h("btn.back",o.UI.radar.emptyBack):h("empty.pickSite",o.UI.radar.emptyPickSite)})]}),"folder"===l&&(0,s.jsx)(i.A,{watched:null!=(a=null==(n=r.cfg)?void 0:n.roots)?a:[],onChanged:()=>r.refresh(!0)}),"site"===l&&(0,s.jsx)(O.T,{cockpit:r}),(0,s.jsx)("p",{className:"someday",children:h("empty.someday",o.UI.radar.emptySomeday)})]})}function H(e){let{cockpit:n,collapsed:a}=e,t=(0,c.kj)(),r=(0,c.cO)();return 0===n.ignored.length?null:(0,s.jsxs)("div",{className:"ign2",children:[(0,s.jsxs)("div",{className:"ign2-row",children:[(0,s.jsxs)("span",{className:"n",...(0,w.uN)(r.ignore),children:[(0,s.jsx)(c.T,{k:"radar.ignoredLabel",en:o.UI.radar.ignoredLabel}),": ",(0,s.jsx)(D.V,{n:n.ignored.length})]}),a&&(0,s.jsx)("span",{className:"why",children:t("radar.ignoredStill",o.UI.radar.ignoredStill)}),(0,s.jsx)("button",{className:"b2 q ign2-toggle","aria-expanded":!a,onClick:()=>n.setCollapsed("ignored",!a),children:a?(0,s.jsx)(c.T,{k:"btn.show",en:o.UI.radar.ignoredShow}):(0,s.jsx)(c.T,{k:"btn.hide",en:o.UI.radar.ignoredHide})})]}),!a&&n.ignored.map(e=>(0,s.jsxs)("div",{className:"ign2-row item",children:[(0,s.jsxs)("span",{className:"item",children:[(0,s.jsx)(D.B,{children:e.label})," ",(0,s.jsx)("span",{className:"mono",children:"project"===e.kind?"project":"site"})]}),(0,s.jsx)("span",{className:"why",children:t("radar.ignoredStill",o.UI.radar.ignoredStill)}),(0,s.jsx)("button",{className:"b2 q",...(0,w.uN)(r.watch),onClick:()=>n.unignore(e.id),children:(0,s.jsx)(c.T,{k:"btn.watchAgain",en:o.UI.radar.watchAgain})})]},e.id))]})}function Y(e){var n,a,i,l,d;let{it:h,cockpit:p,demo:m,onIgnoreRequest:g,onFind:u}=e,j=(0,t.useContext)(r.vC),f=(0,r.cB)(),[b,k]=(0,t.useState)(!1),[v,y]=(0,t.useState)(!1),N=(0,t.useRef)(null);(0,t.useEffect)(()=>{var e,n;b&&v&&(null==(e=N.current)||e.scrollIntoView({block:"nearest"}),null==(n=N.current)||n.focus(),y(!1))},[b,v]);let I=(0,c.kj)(),U=(0,c.cO)(),A=(0,L.pd)(h),C="losable"===A?I("tag.losable",o.UI.radar.tagLosable):"money"===A?I("tag.money",o.UI.radar.tagMoney):I("tag.hygiene",o.UI.radar.tagHygiene),T="losable"===A?U.tagLosable:"money"===A?U.tagMoney:U.tagHygiene,P=[];return!h.handled&&(h.resurfaceId&&P.push({label:I("act.stillIgnore",o.UI.radar.stillIgnore),title:U.ignore,effect:I("eff.stillIgnore",o.UI.radar.effStillIgnore),onClick:()=>p.stillIgnore(h.resurfaceId)}),h.ignore&&!h.resurfaceId&&P.push({label:I("act.ignore",o.UI.radar.ignore),title:U.ignore,effect:I("eff.ignore",o.UI.radar.effIgnore),onClick:()=>g(h.ignore.id,h.ignore.kind,h.ignore.label,h.ignore.atRisk,"project"===h.ignore.kind?I("confirm.project",o.UI.radar.confirmProject):I("confirm.site",o.UI.radar.confirmSite),"site"===h.kind?{down:!0}:void 0)}),h.laterId&&P.push({label:I("act.later",o.UI.radar.later),title:U.later,effect:I("eff.later",o.UI.radar.effLater),onClick:()=>p.later(h.laterId)}),h.findPath&&P.push({label:I("act.stopWatching",o.UI.radar.stopWatching),title:U.unwatch,effect:I("eff.stopWatching",o.UI.radar.effStopWatching),danger:!0,onClick:()=>{p.post({action:"removeRoot",path:h.findPath}).then(e=>{e.ok&&p.resolveRow(h.findPath)})}})),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{[B.J6]:h.id,className:"need".concat(b?" open":"").concat("red"===h.tone&&!h.handled?" bad":"").concat(h.handled?" handled":""),children:[(0,s.jsx)("span",{className:"tag ".concat(A),...(0,w.uN)(T),children:C}),(0,s.jsxs)("div",{className:"txt",children:[(0,s.jsx)("b",{children:h.whatP?(0,s.jsx)(c.P,{p:h.whatP}):h.what}),(0,s.jsx)("span",{children:h.whyP?(0,s.jsx)(c.P,{p:h.whyP}):h.why})]}),h.since&&!(0,x.nW)(h.since,f)&&(0,s.jsx)("span",{className:"age",...(0,w.uN)(U.age),children:function(e){let n=Math.floor(e/6e4);return n<60?"".concat(Math.max(1,n),"m"):n<1440?"".concat(Math.floor(n/60),"h"):"".concat(Math.floor(n/1440),"d")}(f-h.since)}),(0,s.jsxs)("div",{className:"acts",children:[!h.handled&&(h.steps.length>0||(null!=(a=null==(n=h.devSteps)?void 0:n.length)?a:0)>0)&&(0,s.jsx)("button",{className:"b2",...(0,w.uN)(U.fix),onClick:()=>{k(!0),y(!0)},children:(0,s.jsx)(c.T,{k:"btn.fix",en:o.UI.session.fix})}),!h.handled&&h.checkId&&(0,s.jsx)("button",{className:"b2",...(0,w.uN)(U.check),onClick:()=>p.ack(h.checkId),children:I("act.check",o.UI.radar.check)}),!h.handled&&h.resurfaceId&&(0,s.jsx)("button",{className:"b2",...(0,w.uN)(U.watch),onClick:()=>p.unignore(h.resurfaceId),children:(0,s.jsx)(c.T,{k:"btn.watchAgain",en:o.UI.radar.watchAgain})}),!h.handled&&h.findPath&&(0,s.jsx)("button",{className:"b2",onClick:()=>u(h.findPath),children:I("act.findIt",o.UI.radar.findIt)}),(0,s.jsx)("button",{className:"b2 q",...(0,w.uN)(U.details),onClick:()=>k(!b),"aria-expanded":b,children:b?(0,s.jsx)(c.T,{k:"btn.hide",en:o.UI.common.hide}):(0,s.jsx)(c.T,{k:"btn.details",en:o.UI.common.details})}),(0,s.jsx)(M.ob,{actions:P})]}),h.handled&&(0,s.jsx)("span",{className:"ok-line handled-note",children:h.handledNoteP?(0,s.jsx)(c.P,{p:h.handledNoteP}):null!=(i=h.handledNote)?i:I("act.handled",o.UI.radar.handled)})]}),b&&(0,s.jsxs)("div",{className:"need-draw",children:[(0,s.jsxs)("div",{className:"need-detail rec",ref:N,tabIndex:-1,children:[(0,s.jsx)("span",{className:"k",children:I("fix.what",o.UI.session.fixHeadingWhat)}),(0,s.jsx)("span",{children:h.whyP?(0,s.jsx)(c.P,{p:h.whyP}):h.why}),(0,s.jsx)("span",{className:"k",children:I("fix.steps",o.UI.session.fixHeadingSteps)}),(null!=(l=h.stepsP)?l:h.steps.map(e=>({k:"",en:e}))).map((e,n)=>(0,s.jsx)("span",{children:(0,s.jsx)(c.P,{p:e})},n))]}),j&&h.devSteps&&h.devSteps.length>0&&(0,s.jsxs)("div",{className:"need-detail cmds",children:[(0,s.jsx)("span",{className:"k",children:I("fix.commands",o.UI.session.fixHeadingCommands)}),h.devSteps.map(e=>(0,s.jsx)(D.B,{mono:!0,children:e},e)),(0,s.jsx)(B.M0,{it:h})]}),h.openPath&&!m&&(0,s.jsxs)("div",{className:"draw-line",children:[(0,s.jsx)("span",{className:"k",children:I("radar.folder",o.UI.radar.folder)}),(0,s.jsx)(D.B,{mono:!0,children:h.openPath}),(0,s.jsx)(B.r8,{path:h.openPath})]}),(0,s.jsxs)("div",{className:"need-detail",children:[(0,s.jsx)("span",{className:"k",children:I("radar.whatISaw",o.UI.radar.whatISaw)}),(null!=(d=h.evidenceP)?d:h.evidence.map(e=>({k:"",en:e}))).map((e,n)=>(0,s.jsx)("span",{className:"mono",children:(0,s.jsx)(c.P,{p:e})},n))]})]})]})}},8106:(e,n,a)=>{"use strict";a.d(n,{T:()=>l});var s=a(5155),t=a(2115),r=a(436),i=a(5310);function l(e){let{cockpit:n,onAdded:a}=e,[l,o]=(0,t.useState)(""),[c,d]=(0,t.useState)(""),[h,p]=(0,t.useState)(!1),[m,g]=(0,t.useState)(null),x=(0,i.kj)(),u=async e=>{var s;if(e.preventDefault(),!l.trim())return;p(!0),g(null);let t=await n.post({action:"addUrl",url:l.trim(),label:c.trim()||void 0});p(!1),t.ok?(o(""),d(""),g({ok:!0,text:x("site.added",r.UI.radar.siteAdded)}),n.readHealth(),null==a||a()):g({ok:!1,text:null!=(s=t.message)?s:x("common.somethingWrong",r.UI.common.somethingWrong)})};return(0,s.jsxs)("form",{className:"setup",onSubmit:u,children:[(0,s.jsxs)("div",{className:"addrow",children:[(0,s.jsx)("input",{className:"in",type:"text",inputMode:"url",dir:"ltr",value:l,"aria-label":x("site.addrAria",r.UI.radar.siteAddrAria),placeholder:r.UI.radar.sitePlaceholder,onChange:e=>o(e.target.value)}),(0,s.jsx)("input",{className:"in",type:"text",value:c,"aria-label":x("site.nameAria",r.UI.radar.siteNameAria),placeholder:x("site.namePlaceholder",r.UI.radar.siteNamePlaceholder),onChange:e=>d(e.target.value)}),(0,s.jsx)("button",{className:"btn primary",type:"submit",disabled:h||!l.trim(),children:h?x("site.adding",r.UI.radar.siteAdding):x("site.add",r.UI.radar.siteAdd)})]}),m&&(0,s.jsx)("p",{className:m.ok?"ok-line":"error-line",children:m.text})]})}},8216:(e,n,a)=>{Promise.resolve().then(a.bind(a,1601))}},e=>{e.O(0,[3192,5449,7897,2036,4097,7482,8441,1255,7358],()=>e(e.s=8216)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7081],{2149:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>N});var s=r(5155),a=r(2115),n=r(7064),l=r(6660),o=r(5163),i=r(8261),c=r(436),d=r(8706);function p(e,t,r){return{fact:e.en,factP:e,why:t.en,whyP:t,detail:r.en,detailP:r}}function u(e){var t;let r=[];if(e.oldestTodo&&r.push({cat:c.UI.report.catTimeCapsule,catKey:"report.catTimeCapsule",...p((0,d.ph)("wk.todoFact",'Your oldest note to yourself is still open, from {0}: "{1}"',e.oldestTodo.from,e.oldestTodo.quote),(0,d.pl)("wk.todoWhy",c.UI.report.wTodoWhy),(0,d.pl)("tip.todosTip",c.UI.report.todosTip))}),e.reclaimableBytes>5e7&&r.push({cat:c.UI.report.catHousekeeping,catKey:"report.catHousekeeping",...p((0,d.ph)("wk.spaceFact","{0} of downloaded code libraries sit in projects you have not touched in months",(t=e.reclaimableBytes)>=1e9?"".concat((t/1e9).toFixed(1)," GB"):"".concat(Math.round(t/1e6)," MB")),(0,d.pl)("wk.spaceWhy",c.UI.report.wSpaceWhy),(0,d.pl)("tip.reclaimableTip",c.UI.report.reclaimableTip))}),e.busiest&&r.push({cat:c.UI.report.catHistory,catKey:"report.catHistory",...p((0,d.ph)("wk.busiestFact","{0} is your busiest project, {1} commits",e.busiest.name,e.busiest.commits.toLocaleString()),(0,d.pl)("wk.busiestWhy",c.UI.report.wBusiestWhy),(0,d.pl)("tip.busiestTip",c.UI.report.busiestTip))}),e.anniversaries.length>0){let t=e.anniversaries[0];r.push({cat:c.UI.report.catMilestone,catKey:"report.catMilestone",...p((0,d.ph)("wk.birthdayFact","{0} turns {1} on {2}",t.name,t.years,t.when),(0,d.pl)("wk.birthdayWhy",c.UI.report.wBirthdayWhy),(0,d.pl)("tip.birthdayTip",c.UI.report.birthdayTip))})}return r}var h=r(7470),f=r(9178),m=r(4576),x=r(5310),U=r(3034),g=r(1551),j=r(9378),v=r(5964),I=r(9129),y=r(5834),k=r(797);function N(){var e,t;let r=(0,l.x)(),{delta:d}=(0,I.K)(r),[p,j]=(0,a.useState)(null),[N,L]=(0,a.useState)(!1),[A,E]=(0,a.useState)(!1);(0,a.useEffect)(()=>{fetch("/api/report",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>e&&"object"==typeof e&&"number"==typeof e.projects&&e.languages&&"object"==typeof e.languages?j(e):L(!0)).catch(()=>L(!0))},[]);let D=(0,g.$c)(null==(e=r.cfg)?void 0:e.lang),F=(e,t)=>(0,g.tr)(D,e,t),M="ar"===D,R=(0,x.qN)(D),O=function(e){var t,r,s,a,n,l;let i=e.projects.filter(e=>!e.looksDownloaded),d=i.filter(e=>e.uncommitted>0),p=i.filter(e=>{var t;return(null!=(t=e.ahead)?t:0)>0}),u=e.incidents.filter(e=>!e.endedTs).length,h=(null!=(s=null==(t=e.expiry)?void 0:t.items)?s:[]).filter(e=>"number"==typeof e.daysLeft).sort((e,t)=>{var r,s;return(null!=(r=e.daysLeft)?r:0)-(null!=(s=t.daysLeft)?s:0)})[0];return{needing:null!=(a=null==(r=e.attention)?void 0:r.open)?a:0,cleanBacked:i.filter(t=>{let r;return"clean"===(r=t.path.toLowerCase(),(0,o.YV)(e.attention,r))&&t.hasRemote}).length,sitesUp:e.urls.filter(e=>{var t;return null==(t=e.current)?void 0:t.ok}).length,sitesTotal:e.urls.length,unsavedProjects:d.length,unsavedChanges:d.reduce((e,t)=>e+t.uncommitted,0),unpushedCommits:p.reduce((e,t)=>{var r;return e+(null!=(r=t.ahead)?r:0)},0),unpushedProjects:p.length,notBackedUp:i.filter(e=>e.isGit&&e.remoteKnown&&!e.hasRemote).length,sitesQuiet:0===u,nextDate:h?{name:h.name,text:c.UI.report.dateIn(null!=(n=c.UI.ahead.kind[h.kind])?n:h.kind,h.daysLeft),judgment:null!=(l=h.judgment)?l:null}:null}}(r),W=(0,i.X2)(r.attention,r.projects),K=(null==p?void 0:p.languages)?Object.entries(p.languages).sort((e,t)=>t[1]-e[1]):[],V=K.reduce((e,t)=>{let[,r]=t;return e+r},0);return(0,s.jsxs)(n.Ay,{active:"/report",cockpit:r,children:[(0,s.jsxs)("div",{className:"pagebar",children:[(0,s.jsx)("h1",{children:(0,s.jsx)(x.T,{k:"room.report",en:c.UI.report.title})}),(0,s.jsx)("span",{className:"purpose",...(0,k.uN)(R.estate),children:(0,s.jsx)(x.T,{k:"report.purpose",en:c.UI.report.purpose})}),p&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{className:"scan",style:{marginInlineStart:"auto"},onClick:()=>{!function(e,t,r,s){let a=document.createElement("canvas");a.width=2400,a.height=1260;let n=a.getContext("2d");if(!n)return;n.scale(2,2),n.fillStyle=S.void,n.fillRect(0,0,1200,630);let l=n.createRadialGradient(983.9999999999999,-80,60,983.9999999999999,-80,700);l.addColorStop(0,"rgba(110,168,255,.10)"),l.addColorStop(1,"rgba(110,168,255,0)"),n.fillStyle=l,n.fillRect(0,0,1200,630);let o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400;return"".concat(t," ").concat(e,"px Inter, system-ui, sans-serif")},d=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400;return"".concat(t," ").concat(e,'px "IBM Plex Mono", Consolas, monospace')};n.strokeStyle="rgba(148,163,214,.25)",n.lineWidth=4,n.beginPath(),n.arc(80,74,15,0,2*Math.PI),n.stroke(),n.strokeStyle=S.accent,n.lineCap="round",n.beginPath(),n.arc(80,74,15,-Math.PI/2,5*Math.PI/6),n.stroke(),n.fillStyle=S.accent,n.beginPath(),n.arc(80,74,4.5,0,2*Math.PI),n.fill(),n.fillStyle=S.text,n.font=o(28,800),n.textBaseline="middle",n.textAlign="left",n.fillText(c.UI.report.heading,108,75),n.textAlign="right",n.font=d(15),n.fillStyle=S.faint,n.fillText((0,h.OL)(e.generatedAt),1136,75),n.textBaseline="alphabetic",r&&(n.fillStyle=S.dim,n.font=o(15),n.textAlign="left",n.fillText(C(n,r,1072),64,108));let p=1048/3;if([[String(t.needing),c.UI.report.vNeeding(t.needing),t.needing>0?S.warn:S.ok],[String(t.cleanBacked),c.UI.report.vClean,S.ok],[0===t.sitesTotal?"-":"".concat(t.sitesUp,"/").concat(t.sitesTotal),c.UI.report.vSites,0===t.sitesTotal?S.dim:t.sitesUp===t.sitesTotal?S.ok:S.warn]].forEach((e,t)=>{let[r,s,a]=e,l=64+t*(p+12);n.fillStyle=S.panel,B(n,l,126,p,96,14),n.fill(),n.strokeStyle=S.line,n.lineWidth=1,B(n,l,126,p,96,14),n.stroke(),n.fillStyle=a,B(n,l+18,126,44,3,1.5),n.fill(),n.fillStyle=a,n.font=o(40,700),n.textAlign="left",n.fillText(r,l+20,184),n.fillStyle=S.dim,n.font=o(15),n.fillText(s,l+20,208)}),s){let e=(0,i.sx)(s);n.fillStyle="clean"===e.tone?S.ok:S.warn,n.font=o(17,700),n.textAlign="left",n.fillText(C(n,e.headline.en,1072),64,243)}n.fillStyle=S.faint,n.font=d(13,500),n.fillText(c.UI.report.rightNow.toUpperCase(),64,260);let u=[];u.push([c.UI.report.rUnsaved,t.unsavedProjects>0?c.UI.report.rUnsavedVal(t.unsavedProjects,t.unsavedChanges):c.UI.report.rNone,t.unsavedProjects>0?S.warn:S.ok]),t.unpushedCommits>0&&u.push([c.UI.report.rUnpushed,c.UI.report.rUnpushedVal(t.unpushedCommits,t.unpushedProjects),S.warn]),u.push([t.notBackedUp>0?c.UI.report.rNoBackup:c.UI.report.rEverythingElse,t.notBackedUp>0?c.UI.report.rNoBackupVal(t.notBackedUp):c.UI.report.rBackedUp,t.notBackedUp>0?S.warn:S.ok]),t.sitesTotal>0&&u.push([c.UI.report.rSites,t.sitesUp===t.sitesTotal?t.sitesQuiet?c.UI.report.rSitesAllUp:c.UI.report.rSitesUpNow:c.UI.report.rSitesDown(t.sitesTotal-t.sitesUp),t.sitesUp===t.sitesTotal?S.ok:S.warn]),t.nextDate&&u.push([c.UI.report.rNext,"".concat(t.nextDate.name," - ").concat(t.nextDate.text),S.dim]);let f=292;for(let[e,t,r]of u.slice(0,5))n.fillStyle=S.dim,n.font=o(17),n.textAlign="left",n.fillText(e,64,f),n.fillStyle=r,n.font=o(17,600),n.textAlign="right",n.fillText(P(t,46),534,f),n.strokeStyle=S.line,n.lineWidth=1,n.beginPath(),n.moveTo(64,f+12),n.lineTo(534,f+12),n.stroke(),f+=36;n.textAlign="left",n.fillStyle=S.faint,n.font=d(13,500),n.fillText(c.UI.report.inNumbers.toUpperCase(),640,260);let x=Object.entries(e.languages).sort((e,t)=>t[1]-e[1]),U=x.reduce((e,t)=>{let[,r]=t;return e+r},0);if(U>0){let e=640,t=[S.accent,"#8FB8FF","#4A7ACB","#3B5A8A"];x.slice(0,4).forEach((r,s)=>{let[,a]=r,l=a/U*496;n.fillStyle=t[s],n.fillRect(e,276,l,10),e+=l}),n.fillStyle=S.faint,n.fillRect(e,276,Math.max(0,1136-e),10)}let g=[[e.lines.toLocaleString(),c.UI.report.fLines],[String(e.projects),c.UI.report.fProjects]];x.length>0&&g.push([String(x.length),c.UI.report.fLanguages(x[0][0])]),null!=e.commits&&g.push([e.commits.toLocaleString(),c.UI.report.fCommits]),g.slice(0,4).forEach((e,t)=>{let[r,s]=e,a=640+t%2*248,l=312+84*Math.floor(t/2);n.fillStyle=S.inset,B(n,a,l,236,68,12),n.fill(),n.strokeStyle=S.line,n.lineWidth=1,B(n,a,l,236,68,12),n.stroke(),n.fillStyle=S.text,n.font=o(24,700),n.textAlign="left",n.fillText(r,a+16,l+32),n.fillStyle=S.faint,n.font=o(14),n.fillText(P(s,30),a+16,l+54)}),e.oldestTodo&&(n.fillStyle=S.dim,n.font="italic 400 17px Inter, system-ui, sans-serif",n.textAlign="left",n.fillText(C(n,'"'.concat(e.oldestTodo.quote,'" - ').concat(c.UI.report.wTodoFrom(e.oldestTodo.from)),1072),64,512)),n.font=d(13),n.textAlign="left";let j=(0,m.dv)(n,64,604,S.text,S.accent);n.fillStyle=S.faint,n.fillText(" ".concat(c.UI.shell.footBy," ").concat(m.rM," \xb7 ").concat(c.UI.report.imageFoot),j,604);let v=document.createElement("a");v.download="your-estate-".concat((0,h.rq)(e.generatedAt),".png"),v.href=a.toDataURL("image/png"),v.click()}(p,O,T(d,D),W)},children:F("report.download",c.UI.report.download)}),(0,s.jsx)("button",{className:"btn",onClick:()=>{!function(e,t,r,s){var a;let n=new Blob([function(e){var t;let{data:r,now:s,seal:a,date:n,since:l,radius:o}=e,i=[];i.push("# ".concat(c.UI.report.heading)),i.push("".concat(c.UI.report.asOf," ").concat(n)),i.push(""),l&&(i.push(l),i.push("")),o&&(i.push(o),i.push("")),i.push("- ".concat(s.needing," ").concat(c.UI.report.vNeeding(s.needing))),i.push("- ".concat(s.cleanBacked," ").concat(c.UI.report.vClean)),i.push("- ".concat(0===s.sitesTotal?"-":"".concat(s.sitesUp,"/").concat(s.sitesTotal)," ").concat(c.UI.report.vSites)),i.push(""),i.push("## ".concat(c.UI.report.rightNow)),i.push(""),i.push("- ".concat(c.UI.report.rUnsaved,": ").concat(s.unsavedProjects>0?c.UI.report.rUnsavedVal(s.unsavedProjects,s.unsavedChanges):c.UI.report.rNone)),s.unpushedCommits>0&&i.push("- ".concat(c.UI.report.rUnpushed,": ").concat(c.UI.report.rUnpushedVal(s.unpushedCommits,s.unpushedProjects))),i.push("- ".concat(s.notBackedUp>0?c.UI.report.rNoBackup:c.UI.report.rEverythingElse,": ").concat(s.notBackedUp>0?c.UI.report.rNoBackupVal(s.notBackedUp):c.UI.report.rBackedUp)),s.sitesTotal>0&&i.push("- ".concat(c.UI.report.rSites,": ").concat(s.sitesUp===s.sitesTotal?s.sitesQuiet?c.UI.report.rSitesAllUp:c.UI.report.rSitesUpNow:c.UI.report.rSitesDown(s.sitesTotal-s.sitesUp))),s.nextDate&&i.push("- ".concat(c.UI.report.rNext,": ").concat(s.nextDate.name," - ").concat(s.nextDate.text)),i.push(""),i.push("## ".concat(c.UI.report.inNumbers)),i.push(""),i.push("- ".concat(r.lines.toLocaleString()," ").concat(c.UI.report.fLines));let d=null!=(t=r.excludedCopies)?t:0;i.push("- ".concat(r.projects," ").concat(c.UI.report.fProjects).concat(d>0?" (".concat(c.UI.report.fProjectsExcluded(d),")"):""));let p=Object.entries(r.languages).sort((e,t)=>t[1]-e[1]);p.length>0&&i.push("- ".concat(p.length," ").concat(c.UI.report.fLanguages(p[0][0]))),null!=r.commits&&i.push("- ".concat(r.commits.toLocaleString()," ").concat(c.UI.report.fCommits)),i.push("");let u=[];if(r.oldestTodo&&u.push('- "'.concat(r.oldestTodo.quote,'" - ').concat(c.UI.report.wTodoFrom(r.oldestTodo.from))),r.busiest&&u.push("- ".concat(c.UI.report.wBusiestFact(r.busiest.name,r.busiest.commits))),u.length>0){for(let e of(i.push("## ".concat(c.UI.report.worthKnowing)),i.push(""),u))i.push(e);i.push("")}return i.push("---"),i.push(""),a.known?(i.push("".concat(m.qt," ").concat(a.id).concat(a.version?" (".concat(a.version,")"):"")),a.proves&&i.push(a.proves)):a.note&&i.push(a.note),i.push(""),i.push("".concat(m.qt," ").concat(c.UI.shell.footBy," ").concat(m.rM," \xb7 ").concat(c.UI.report.imageFoot)),(0,v.dK)(i.join("\n"))}({data:e,now:{needing:t.needing,cleanBacked:t.cleanBacked,sitesUp:t.sitesUp,sitesTotal:t.sitesTotal,unsavedProjects:t.unsavedProjects,unsavedChanges:t.unsavedChanges,unpushedCommits:t.unpushedCommits,unpushedProjects:t.unpushedProjects,notBackedUp:t.notBackedUp,sitesQuiet:t.sitesQuiet,nextDate:t.nextDate?{name:t.nextDate.name,text:t.nextDate.text}:null},seal:e.build,date:(0,h.OL)(e.generatedAt),since:r,radius:s?(0,i.sx)(s).headline.en:null})],{type:"text/markdown"}),l=URL.createObjectURL(n),o=document.createElement("a");a=(0,h.rq)(e.generatedAt),o.download="your-estate-".concat(a,".md"),o.href=l,o.click(),setTimeout(()=>URL.revokeObjectURL(l),2e3)}(p,O,T(d,D),W)},children:F("report.downloadText",c.UI.report.downloadText)}),(0,s.jsx)("button",{className:"btn",disabled:A,onClick:()=>{E(!0),fetch("/api/card",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{(null==e?void 0:e.card)&&function(e,t){let r=document.createElement("canvas");r.width=2160,r.height=2700;let s=r.getContext("2d");if(!s)return;s.scale(2,2);let a=(e,r)=>(0,g.tr)(t,e,r);s.fillStyle=S.void,s.fillRect(0,0,1080,1350);let n=s.createRadialGradient(540,120,80,540,120,900);n.addColorStop(0,"rgba(77,127,255,.14)"),n.addColorStop(1,"rgba(77,127,255,0)"),s.fillStyle=n,s.fillRect(0,0,1080,1350);let l=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return"".concat(t?700:400," ").concat(e,"px Inter, system-ui, sans-serif")};s.textBaseline="middle",s.textAlign="center",s.fillStyle=S.text,s.font=l(200,!0),s.fillText(e.lines.toLocaleString(),540,232),s.fillStyle=S.dim,s.font=l(30),s.fillText(a("card.heroLabel",c.UI.card.heroLabel).replace("{0}",String(e.projects)),540,366),s.fillStyle=S.faint,s.font=l(21),s.fillText(a("card.heroSub",c.UI.card.heroSub),540,412);let o=[[a("card.statLanguages",c.UI.card.statLanguages),String(e.languages)],...null===e.ageDays?[]:[[a("card.statAge",c.UI.card.statAge),(0,f.LS)(e.ageDays,"day")]],[a("card.statBranches",c.UI.card.statBranches),String(e.branches)],[a("card.statCommits",c.UI.card.statCommits),String(e.total)],[a("card.statReadProjects",c.UI.card.statReadProjects),String(e.readProjects)],...0!==e.busiestProject&&e.busiestProjectName?[[a("card.statBusiestProject",c.UI.card.statBusiestProject).replace("{0}",(0,f.LS)(e.busiestProject,"commit")),e.busiestProjectName]]:[]],i=e.projects>0;i||(s.fillStyle=S.dim,s.font=l(30),s.fillText(a("card.emptyEstate",c.UI.card.emptyEstate),540,512));let d=920/3;i&&o.forEach((e,t)=>{let[r,a]=e,n=Math.floor(t/3),o=80+920/3*(t%3+.5),i=512+156*n,c=(e=>{for(let t=58;t>=26;t-=4)if(s.font=l(t,!0),s.measureText(e).width<=d-16)return{font:l(t,!0),text:e};s.font=l(26,!0);let t=e;for(;t.length>1&&s.measureText(t+"…").width>d-16;)t=t.slice(0,-1);return{font:l(26,!0),text:t+"…"}})(a);s.fillStyle=S.text,s.font=c.font,s.fillText(c.text,o,i),s.fillStyle=S.faint,s.font=l(20),s.fillText(r,o,i+54)});if(i){s.fillStyle=S.faint,s.font=l(20),s.fillText(a("card.gridHead",c.UI.card.gridHead),540,784);let t=Math.round(309.5),r=824,n=Math.max(1,e.busiestDay);for(let a=0;a<12;a++)for(let l=0;l<7;l++){let o=7*a+l,i=e.days[o],c=t+39*a,d=r+39*l,p=i?i.commits:0;if(0===p)s.fillStyle="rgba(148,163,214,.10)";else{let e=Math.min(1,p/n);s.fillStyle="rgba(77,127,255,".concat((.28+.72*e).toFixed(3),")")}B(s,c,d,32,32,6),s.fill()}}i&&e.capped&&(s.fillStyle=S.faint,s.font=l(18),s.fillText(a("card.capped",c.UI.card.capped).replace("{0}",String(e.readProjects)),540,1174)),s.fillStyle=S.dim,s.font="400 ".concat(18,'px "IBM Plex Mono", Consolas, monospace'),s.fillText(e.seal.known&&e.seal.id?a("card.seal",c.UI.card.seal).replace("{0}",e.seal.id):a("card.sealNoBuild",c.UI.card.sealNoBuild),540,1218),s.font=l(20,!0);let p=a("card.foot",c.UI.card.foot),u=s.measureText(p).width;s.textAlign="left";let x=Math.round((1080-u)/2),U=(0,m.dv)(s,x,1280,S.text,S.accent);s.fillStyle=S.faint,s.font=l(20),s.fillText(" ".concat(c.UI.shell.footBy," ").concat(m.rM),U,1280);let j=document.createElement("a");j.download="af360-card-".concat((0,h.rq)(Date.now()),".png"),j.href=r.toDataURL("image/png"),j.click()}(e.card,D)}).catch(()=>{}).finally(()=>E(!1))},children:F("card.button",c.UI.card.button)})]})]}),(null==p?void 0:p.demo)&&(0,s.jsxs)("p",{className:"banner",children:[F("banner.reportLead",c.UI.report.bannerLead)," ",(0,s.jsx)("a",{className:"link",href:"/radar",children:F("banner.radarLink",c.UI.report.bannerLink)})," ",F("banner.reportTail",c.UI.report.bannerTail)]}),N?(0,s.jsx)("p",{className:"error-line",children:F("report.failed",c.UI.report.failed)}):p?0===p.projects?(0,s.jsxs)("div",{className:"empty",children:[(0,s.jsx)("p",{className:"invite",children:F("report.emptyInvite",c.UI.report.emptyInvite)}),(0,s.jsx)("p",{children:F("report.emptyLine",c.UI.report.emptyLine)}),(0,s.jsx)("a",{className:"btn primary",href:"/radar",children:F("btn.goRadar",c.UI.report.goRadar)})]}):(0,s.jsxs)("div",{className:"er",children:[(0,s.jsxs)("div",{className:"er-head",children:[(0,s.jsx)("h1",{children:(0,s.jsx)(x.T,{k:"sec.reportHeading",en:c.UI.report.heading})}),(0,s.jsxs)("span",{className:"when",children:[F("report.asOf",c.UI.report.asOf)," ",(0,s.jsx)(U.En,{children:(0,s.jsx)(n.fV,{ts:p.generatedAt,skewForm:"core"})})," - ",(0,s.jsx)(U.En,{children:new Date(p.generatedAt).toLocaleDateString([],{month:"long",day:"numeric"})})]})]}),(0,s.jsx)("div",{className:"er-sub",children:F("report.sub",c.UI.report.sub)}),(0,s.jsxs)("div",{className:"verdict",children:[(0,s.jsxs)("div",{className:"vcard ".concat(O.needing>0?"warn":"ok"),children:[(0,s.jsx)("div",{className:"big",children:O.needing}),(0,s.jsx)("div",{className:"lbl",children:F("report.vNeeding",c.UI.report.vNeeding(O.needing))})]}),(0,s.jsxs)("div",{className:"vcard ok",children:[(0,s.jsx)("div",{className:"big",children:O.cleanBacked}),(0,s.jsx)("div",{className:"lbl",children:F("report.vClean",c.UI.report.vClean)})]}),(0,s.jsxs)("div",{className:"vcard ".concat(0===O.sitesTotal?"info":O.sitesUp===O.sitesTotal?"ok":"warn"),children:[(0,s.jsx)("div",{className:"big",children:0===O.sitesTotal?"-":"".concat(O.sitesUp,"/").concat(O.sitesTotal)}),(0,s.jsx)("div",{className:"lbl",children:F("report.vSites",c.UI.report.vSites)})]})]}),(0,s.jsxs)("div",{className:"er-block",children:[(0,s.jsx)("h4",{children:(0,s.jsx)(x.T,{k:"sec.rightNow",en:c.UI.report.rightNow})}),(0,s.jsxs)("div",{className:"er-row",children:[(0,s.jsx)("span",{className:"k",children:F("report.rUnsaved",c.UI.report.rUnsaved)}),(0,s.jsx)("span",{className:"v",style:{color:O.unsavedProjects>0?"var(--warn)":"var(--ok)"},children:O.unsavedProjects>0?c.UI.report.rUnsavedVal(O.unsavedProjects,O.unsavedChanges):F("report.rNone",c.UI.report.rNone)})]}),O.unpushedCommits>0&&(0,s.jsxs)("div",{className:"er-row",children:[(0,s.jsx)("span",{className:"k",children:F("report.rUnpushed",c.UI.report.rUnpushed)}),(0,s.jsx)("span",{className:"v",style:{color:"var(--warn)"},children:c.UI.report.rUnpushedVal(O.unpushedCommits,O.unpushedProjects)})]}),(0,s.jsxs)("div",{className:"er-row",children:[(0,s.jsx)("span",{className:"k",children:O.notBackedUp>0?F("report.rNoBackup",c.UI.report.rNoBackup):F("report.rEverythingElse",c.UI.report.rEverythingElse)}),(0,s.jsx)("span",{className:"v",style:{color:O.notBackedUp>0?"var(--warn)":"var(--ok)"},children:O.notBackedUp>0?c.UI.report.rNoBackupVal(O.notBackedUp):F("report.rBackedUp",c.UI.report.rBackedUp)})]}),O.sitesTotal>0&&(0,s.jsxs)("div",{className:"er-row",children:[(0,s.jsx)("span",{className:"k",children:F("report.rSites",c.UI.report.rSites)}),(0,s.jsx)("span",{className:"v",style:{color:O.sitesUp===O.sitesTotal?"var(--ok)":"var(--warn)"},children:O.sitesUp===O.sitesTotal?O.sitesQuiet?F("report.rSitesAllUp",c.UI.report.rSitesAllUp):F("report.rSitesUpNow",c.UI.report.rSitesUpNow):M?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(U.V,{n:O.sitesTotal-O.sitesUp})," ",F("report.rSitesDownTail","")]}):c.UI.report.rSitesDown(O.sitesTotal-O.sitesUp)})]}),O.nextDate&&(0,s.jsxs)("div",{className:"er-row wrap",children:[(0,s.jsx)("span",{className:"k",children:F("report.rNext",c.UI.report.rNext)}),(0,s.jsxs)("span",{className:"v mono",children:[O.nextDate.name," - ",O.nextDate.text]}),O.nextDate.judgment&&(0,s.jsx)("span",{className:"er-why",children:O.nextDate.judgment})]})]}),(0,s.jsxs)("div",{className:"er-block",children:[(0,s.jsx)("h4",{children:(0,s.jsx)(x.T,{k:"sec.inNumbers",en:c.UI.report.inNumbers})}),K.length>0&&V>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"langbar",role:"img","aria-label":F("report.langAria",c.UI.report.langAria),children:[K.slice(0,4).map((e,t)=>{let[r,a]=e;return(0,s.jsx)("span",{...(0,k.uN)("".concat(r," \xb7 ").concat(a.toLocaleString()," ").concat(F("report.linesWord",c.UI.report.linesWord))),style:{inlineSize:"".concat(a/V*100,"%"),background:w[t]}},r)}),K.length>4&&(0,s.jsx)("span",{...(0,k.uN)(F("report.langRest",c.UI.report.langRest)),style:{inlineSize:"".concat(K.slice(4).reduce((e,t)=>{let[,r]=t;return e+r},0)/V*100,"%"),background:"var(--faint)"}})]}),(0,s.jsx)("div",{className:"langkey",children:K.slice(0,4).map((e,t)=>{let[r]=e;return(0,s.jsxs)("span",{children:[(0,s.jsx)("i",{style:{background:w[t]}}),r]},r)})})]}),(0,s.jsxs)("div",{className:"facts",children:[(0,s.jsxs)("div",{className:"fact",children:[(0,s.jsx)("div",{className:"n",children:p.lines.toLocaleString()}),(0,s.jsx)("div",{className:"l",children:F("report.fLines",c.UI.report.fLines)})]}),(0,s.jsxs)("div",{className:"fact",children:[(0,s.jsx)("div",{className:"n",children:p.projects}),(0,s.jsx)("div",{className:"l",children:F("report.fProjects",c.UI.report.fProjects)}),(null!=(t=p.excludedCopies)?t:0)>0&&(0,s.jsx)("div",{className:"l excl",children:M?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(U.V,{n:p.excludedCopies})," ",F("report.fProjectsExcluded","")]}):c.UI.report.fProjectsExcluded(p.excludedCopies)})]}),K.length>0&&(0,s.jsxs)("div",{className:"fact",children:[(0,s.jsx)("div",{className:"n",children:K.length}),(0,s.jsx)("div",{className:"l",children:M?(0,s.jsxs)(s.Fragment,{children:[F("report.fLanguagesTail","")," ",(0,s.jsx)(U.B,{children:K[0][0]})]}):c.UI.report.fLanguages(K[0][0])})]}),null!=p.commits&&(0,s.jsxs)("div",{className:"fact",children:[(0,s.jsx)("div",{className:"n",children:p.commits.toLocaleString()}),(0,s.jsx)("div",{className:"l",children:F("report.fCommits",c.UI.report.fCommits)})]})]})]}),u(p).length>0&&(0,s.jsxs)("div",{className:"er-block",children:[(0,s.jsx)("h4",{children:(0,s.jsx)(x.T,{k:"sec.worthKnowing",en:c.UI.report.worthKnowing})}),(0,s.jsx)("p",{className:"er-subline",children:F("report.worthKnowingSub",c.UI.report.worthKnowingSub)}),(0,s.jsx)("div",{className:"wk",children:u(p).map(e=>(0,s.jsx)(b,{row:e},e.cat+e.fact))})]})]}):(0,s.jsxs)("div",{className:"sweep-wrap",children:[(0,s.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,s.jsx)("span",{children:(0,s.jsx)(y.h,{children:F("report.counting",c.UI.report.counting)})})]})]})}function b(e){let{row:t}=e,[r,n]=(0,a.useState)(!1),l=(0,x.kj)();return(0,x.cO)(),(0,s.jsxs)("div",{className:"wkrow".concat(r?" open":""),children:[(0,s.jsx)("span",{className:"cat mono",children:l(t.catKey,t.cat)}),(0,s.jsxs)("div",{className:"fact",children:[t.factP?(0,s.jsx)(x.P,{p:t.factP}):t.fact,t.why&&(0,s.jsxs)("span",{className:"why",children:[" - ",t.whyP?(0,s.jsx)(x.P,{p:t.whyP}):t.why]})]}),(0,s.jsx)("button",{className:"b2 q wk-details","aria-expanded":r,onClick:()=>n(!r),children:r?l("btn.hide",c.UI.common.hide):l("report.detailsLabel",c.UI.report.detailsLabel)}),r&&(0,s.jsx)("div",{className:"wkdepth",children:t.detailP?(0,s.jsx)(x.P,{p:t.detailP}):t.detail})]})}let w=["var(--accent)","var(--info)","color-mix(in srgb, var(--accent) 55%, var(--panel))","color-mix(in srgb, var(--info) 40%, var(--panel))"],S={void:"#0A0D14",panel:"#0F1420",inset:"#0E1526",line:"rgba(148,163,214,.18)",text:"#E7ECF4",dim:"#9AA6BC",faint:"#5C6880",accent:"#4D7FFF",ok:"#3ECF8E",warn:"#E8B23D"};function T(e,t){if(!e)return null;let r=null===e.since?"":(0,h.OL)(e.since);return(0,j.lz)(e,(e,r)=>(0,g.tr)(t,e,r),r)}function B(e,t,r,s,a,n){e.beginPath(),e.moveTo(t+n,r),e.arcTo(t+s,r,t+s,r+a,n),e.arcTo(t+s,r+a,t,r+a,n),e.arcTo(t,r+a,t,r,n),e.arcTo(t,r,t+s,r,n),e.closePath()}function P(e,t){return e.length>t?e.slice(0,t-1)+"…":e}function C(e,t,r){if(e.measureText(t).width<=r)return t;let s=t.split(" "),a="";for(let t of s){if(e.measureText("".concat(a).concat(a?" ":"").concat(t,"…")).width>r)break;a+=(a?" ":"")+t}return(a||t.slice(0,8))+"…"}},9576:(e,t,r)=>{Promise.resolve().then(r.bind(r,2149))}},e=>{e.O(0,[3192,5449,2036,8441,1255,7358],()=>e(e.s=9576)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4662],{1823:(e,s,t)=>{Promise.resolve().then(t.bind(t,2802))},2613:(e,s,t)=>{"use strict";t.d(s,{fn:()=>u,hf:()=>h,ob:()=>o,tU:()=>m});var n=t(5155),a=t(2115),i=t(7650),l=t(436),c=t(5310),r=t(3034),d=t(797);function o(e){let{actions:s,label:t}=e,[r,o]=(0,a.useState)(!1),[h,u]=(0,a.useState)(null),m=(0,a.useRef)(null),g=(0,a.useRef)(null),p=(0,a.useId)(),b=(0,c.kj)(),j=(0,c.cO)(),x=(0,a.useCallback)(()=>{var e,s,t;let n=null==(e=m.current)?void 0:e.firstElementChild;if(!n)return;let a=n.getBoundingClientRect(),i=null!=(t=null==(s=g.current)?void 0:s.offsetHeight)?t:0,l=window.innerHeight-a.bottom,c=i>0&&l<i+8&&a.top>l;u({top:c?a.top-i-4:a.bottom+4,end:Math.max(4,window.innerWidth-a.right),flip:c})},[]);return((0,a.useLayoutEffect)(()=>{r&&x()},[r,x]),(0,a.useEffect)(()=>{if(!r)return;let e=e=>{var s,t;let n=e.target;(null==(s=m.current)?void 0:s.contains(n))||(null==(t=g.current)?void 0:t.contains(n))||o(!1)},s=e=>{"Escape"===e.key&&o(!1)},t=()=>x();return document.addEventListener("mousedown",e),document.addEventListener("keydown",s),window.addEventListener("scroll",t,!0),window.addEventListener("resize",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",s),window.removeEventListener("scroll",t,!0),window.removeEventListener("resize",t)}},[r,x]),0===s.length)?null:(0,n.jsxs)("div",{className:"ovf",ref:m,children:[(0,n.jsxs)("button",{className:"ovf-btn",type:"button","aria-haspopup":"menu","aria-expanded":r,"aria-controls":p,...(0,d.uN)(j.moreActions),onClick:()=>o(e=>!e),children:[(0,n.jsx)(c.T,{k:"btn.more",en:null!=t?t:l.UI.radar.moreActions})," ",(0,n.jsx)("span",{"aria-hidden":!0,children:"▾"})]}),r&&"undefined"!=typeof document&&(0,i.createPortal)((0,n.jsx)("div",{className:"ovf-menu",id:p,role:"menu",ref:g,"aria-label":b("act.moreAria",l.UI.radar.moreActionsAria),style:h?{insetBlockStart:h.top,insetInlineEnd:h.end}:{visibility:"hidden"},children:s.map(e=>(0,n.jsxs)("button",{role:"menuitem",type:"button",...(0,d.uN)(e.title),className:e.danger?"danger":void 0,onClick:()=>{o(!1),e.onClick()},children:[e.label,e.effect&&(0,n.jsx)("span",{children:e.effect})]},e.label))}),document.body)]})}function h(e){let{done:s,total:t,working:a}=e,i=(0,c.kj)();(0,c.cO)();let d="ar"===(0,c.uU)();return t>0&&s<t?(0,n.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,n.jsx)("i",{"aria-hidden":!0}),d?(0,n.jsxs)(n.Fragment,{children:[i("stream.countingLead","")," ",(0,n.jsx)(r.V,{n:s})," ",i("stream.countingMid","")," ",(0,n.jsx)(r.V,{n:t})," ",i("stream.countingTail","")]}):l.UI.stream.counting(s,t)]}):a?(0,n.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,n.jsx)("i",{"aria-hidden":!0}),i("stream.starting",l.UI.stream.starting)]}):null}function u(e){let{view:s,onChange:t}=e,a=(0,c.kj)();return(0,c.cO)(),(0,n.jsxs)("div",{className:"viewseg",role:"group","aria-label":a("radar.viewAria",l.UI.radar.viewAria),children:[(0,n.jsx)("button",{type:"button",className:"cards"===s?"on":"","aria-pressed":"cards"===s,onClick:()=>t("cards"),children:(0,n.jsx)(c.T,{k:"btn.grid",en:l.UI.radar.viewGrid})}),(0,n.jsx)("button",{type:"button",className:"rows"===s?"on":"","aria-pressed":"rows"===s,onClick:()=>t("rows"),children:(0,n.jsx)(c.T,{k:"btn.rows",en:l.UI.radar.viewRows})})]})}function m(e){let{tabs:s,active:t,onChange:a,label:i,vertical:l}=e;return(0,n.jsx)("div",{className:"tabs".concat(l?" tabs-v":""),role:"tablist","aria-orientation":l?"vertical":void 0,"aria-label":i,children:s.map(e=>(0,n.jsxs)("button",{type:"button",role:"tab",id:"tab-".concat(e.id),className:e.id===t?"on":"","aria-selected":e.id===t,"aria-controls":"panel-".concat(e.id),onClick:()=>a(e.id),children:[e.label,void 0!==e.count&&(0,n.jsx)("span",{className:"tabn",children:e.count})]},e.id))})}},2802:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>v});var n=t(5155),a=t(2115),i=t(7064),l=t(4097),c=t(6660),r=t(9712),d=t(2613),o=t(7e3),h=t(436),u=t(5310),m=t(1551),g=t(3034),p=t(3364),b=t(8706),j=t(797);let x=[1,6,24];function v(){var e,s,t;let v=(0,c.x)(),w=(0,m.$c)(null==(e=v.cfg)?void 0:e.lang),y=(e,s)=>(0,m.tr)(w,e,s),k=(0,u.qN)(w),{cfg:f}=v,[N,I]=(0,a.useState)("watching"),[U,S]=(0,a.useState)(!1),[L,T]=(0,a.useState)(null),[C,A]=(0,a.useState)(!1),[H,E]=(0,a.useState)(!1),[D,P]=(0,a.useState)("3"),[R,O]=(0,a.useState)(!1),[W,B]=(0,a.useState)(!1),[F,V]=(0,a.useState)(null),[_,M]=(0,a.useState)(null),[q,z]=(0,a.useState)(null),G=null!=(s=null==f?void 0:f.scanIntervalHours)?s:24,Y=H||!x.includes(G)?"custom":String(G),Z=async e=>{if("custom"===e){E(!0),z(null),P(String(G));return}E(!1),z(null),S(!0),await v.post({action:"setScanInterval",hours:Number(e)}),S(!1)},K=async()=>{let e=Number(D);if(""===D.trim()||!Number.isFinite(e)||e<1||e>24)return void z(y("settings.customBad",h.UI.settings.customBad));S(!0),z(null);let s=await v.post({action:"setScanInterval",hours:e});if(S(!1),!s.ok){var t;z(null!=(t=s.message)?t:h.UI.common.somethingWrong);return}E(!1)},$=v.watching,J=async e=>{S(!0),V(null);let s=await v.post({action:"addRoot",path:e});if(S(!1),!s.ok){var t;V(null!=(t=s.message)?t:h.UI.common.somethingWrong);return}B(!1),v.refresh(!0)},[Q,X]=(0,a.useState)([]),ee=async e=>{S(!0),V(null);let s=await v.post({action:"removeRoot",path:e});if(S(!1),!s.ok){var t;V(null!=(t=s.message)?t:h.UI.common.somethingWrong);return}v.resolveRow(e),X(s=>s.includes(e)?s:[...s,e])},es=async e=>{let s=await v.post({action:"addRoot",path:e});return s.ok&&(v.unresolveRow(e),X(s=>s.filter(s=>s!==e))),s},et=null!=(t=null==f?void 0:f.rules)?t:{exclude:[],muted:[]},en=async e=>{var s;S(!0),M(null);let t=await v.post({action:"addExclude",path:e});S(!1),t.ok?v.refresh(!0):M(null!=(s=t.message)?s:h.UI.common.somethingWrong)},ea=async e=>{S(!0),M(null);let s=await v.post({action:"removeExclude",path:e});if(S(!1),!s.ok){var t;M(null!=(t=s.message)?t:h.UI.common.somethingWrong);return}v.refresh(!0)},ei=async(e,s)=>{T(e),M(null),await v.post({action:s?"unmuteDetector":"muteDetector",id:e}),T(null),v.refresh(!1)},el=(null==f?void 0:f.updateCheck)!==!1,ec=async()=>{A(!0),await v.post({action:"setUpdateCheck",on:!el}),A(!1)},[er,ed]=(0,a.useState)(!1),eo=(null==f?void 0:f.domainLookup)===!0,eh=async()=>{ed(!0),await v.post({action:"setDomainLookup",on:!eo}),ed(!1)},eu=(null==f?void 0:f.standingWatch)===!0,[em,eg]=(0,a.useState)(!1),ep=async()=>{eg(!0),await v.post({action:"setStandingWatch",on:!eu}),eg(!1)},eb=v.startup,ej=null==eb?void 0:eb.state,ex="Enabled"===ej||"EnabledByPolicy"===ej,ev="DisabledByUser"===ej,ew="DisabledByPolicy"===ej,ey="EnabledByPolicy"===ej,ek=!!(null==eb?void 0:eb.available),[ef,eN]=(0,a.useState)(!1),eI=async()=>{eN(!0),await v.post({action:"setStartup",on:!ex}),eN(!1)},eU=(null==f?void 0:f.lang)==="ar"?"ar":"en",eS=async e=>{S(!0),await v.post({action:"setLang",lang:"ar"===e?"ar":"en"}),await v.refresh(!1),S(!1)},eL=(null==f?void 0:f.views.projects)==="rows"&&(null==f?void 0:f.views.urls)==="rows"?"rows":"cards",eT=async e=>{S(!0),await v.post({action:"setView",section:"projects",view:"rows"===e?"rows":null}),await v.post({action:"setView",section:"urls",view:"rows"===e?"rows":null}),S(!1)};return(0,n.jsxs)(i.Ay,{active:"/settings",cockpit:v,children:[(0,n.jsxs)("div",{className:"pagebar",children:[(0,n.jsx)("h1",{children:(0,n.jsx)(u.T,{k:"settings.title",en:h.UI.settings.title})}),(0,n.jsx)("span",{className:"purpose",children:(0,n.jsx)(u.T,{k:"settings.purpose",en:h.UI.settings.purpose})})]}),(0,n.jsxs)("div",{className:"settings-shell",children:[(0,n.jsx)(d.tU,{vertical:!0,label:y("settings.title",h.UI.settings.title),active:N,onChange:I,tabs:[{id:"watching",label:(0,n.jsx)(u.T,{k:"settings.secWatching",en:h.UI.settings.secWatching})},{id:"looking",label:(0,n.jsx)(u.T,{k:"settings.secScan",en:h.UI.settings.secLooking})},{id:"appearance",label:(0,n.jsx)(u.T,{k:"settings.secLook",en:h.UI.settings.secAppearance})},{id:"rules",label:(0,n.jsx)(u.T,{k:"settings.secRules",en:h.UI.settings.secRules})},{id:"data",label:(0,n.jsx)(u.T,{k:"settings.secData",en:h.UI.settings.secData})},{id:"how",label:(0,n.jsx)(u.T,{k:"settings.secHow",en:h.UI.settings.secHow})}]}),(0,n.jsxs)("div",{className:"settings-panel",children:["looking"===N&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"sec",children:(0,n.jsx)("h2",{children:(0,n.jsx)(u.T,{k:"settings.secScan",en:h.UI.settings.secLooking})})}),(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:y("settings.cadenceLabel",h.UI.settings.cadenceLabel)}),(0,n.jsx)("span",{children:y("settings.cadenceHelp",h.UI.settings.cadenceHelp)})]}),(0,n.jsx)("div",{className:"ctl",children:(0,n.jsxs)("select",{className:"in",value:Y,disabled:U,onChange:e=>Z(e.target.value),"aria-label":y("settings.cadenceAria",h.UI.settings.cadenceAria),children:[(0,n.jsx)("option",{value:"1",children:y("settings.cadenceHourly",h.UI.settings.cadenceHourly)}),(0,n.jsx)("option",{value:"6",children:y("settings.cadence6h",h.UI.settings.cadence6h)}),(0,n.jsx)("option",{value:"24",children:y("settings.cadenceDaily",h.UI.settings.cadenceDaily)}),(0,n.jsx)("option",{value:"custom",children:y("settings.cadenceCustom",h.UI.settings.cadenceCustom)})]})})]}),H&&(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:y("settings.customLabel",h.UI.settings.customLabel)}),(0,n.jsx)("span",{children:y("settings.customHelp",h.UI.settings.customHelp)}),q&&(0,n.jsx)("span",{className:"error-line",children:q})]}),(0,n.jsxs)("div",{className:"ctl",children:[(0,n.jsx)("input",{className:"in",type:"number",min:1,max:24,style:{inlineSize:70},value:D,onChange:e=>{P(e.target.value),z(null)},"aria-label":y("settings.hoursAria",h.UI.settings.hoursAria)}),(0,n.jsx)("button",{className:"b",disabled:U,onClick:K,children:(0,n.jsx)(u.T,{k:"btn.save",en:h.UI.common.save})})]})]})]}),"appearance"===N&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"sec",children:(0,n.jsx)("h2",{children:(0,n.jsx)(u.T,{k:"settings.secLook",en:h.UI.settings.secAppearance})})}),(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:y("settings.viewLabel",h.UI.settings.viewLabel)}),(0,n.jsx)("span",{children:y("settings.viewHelp",h.UI.settings.viewHelp)})]}),(0,n.jsx)("div",{className:"ctl",children:(0,n.jsxs)("select",{className:"in",value:eL,disabled:U,onChange:e=>eT(e.target.value),"aria-label":y("settings.viewAria",h.UI.settings.viewAria),children:[(0,n.jsx)("option",{value:"cards",children:y("btn.grid",h.UI.settings.viewCards)}),(0,n.jsx)("option",{value:"rows",children:y("btn.rows",h.UI.settings.viewRows)})]})})]}),(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:(0,n.jsx)(u.T,{k:"settings.lang",en:h.UI.settings.langLabel})}),(0,n.jsx)("span",{dir:"auto",children:y("settings.langHelp",h.UI.settings.langHelp)})]}),(0,n.jsx)("div",{className:"ctl",children:(0,n.jsxs)("select",{className:"in",value:eU,disabled:U,dir:"auto",onChange:e=>eS(e.target.value),"aria-label":y("settings.langAria",h.UI.settings.langAria),children:[(0,n.jsx)("option",{value:"en",children:y("settings.langEn",h.UI.settings.langEn)}),(0,n.jsx)("option",{value:"ar",children:y("settings.langAr",h.UI.settings.langAr)})]})})]})]}),"watching"===N&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"sec",children:(0,n.jsx)("h2",{children:(0,n.jsx)(u.T,{k:"settings.secWatching",en:h.UI.settings.secWatching})})}),(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:y("settings.watchLabel",h.UI.settings.watchLabel)}),(0,n.jsx)("span",{children:y("settings.watchHelp",h.UI.settings.watchHelp)})]}),(0,n.jsx)("div",{className:"ctl",children:(0,n.jsxs)("button",{className:"swt".concat(eu?" on":""),role:"switch","aria-checked":eu,"aria-label":y("settings.watchAria",h.UI.settings.watchAria),disabled:em,onClick:ep,children:[(0,n.jsx)("i",{"aria-hidden":!0}),(0,n.jsx)("span",{children:eu?(0,n.jsx)(u.T,{k:"settings.on",en:h.UI.settings.on}):(0,n.jsx)(u.T,{k:"settings.off",en:h.UI.settings.off})})]})})]}),ek&&(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:y("settings.startupLabel",h.UI.settings.startupLabel)}),(0,n.jsx)("span",{children:ew?y("settings.startupPolicyOff",h.UI.settings.startupPolicyOff):ey?y("settings.startupPolicyOn",h.UI.settings.startupPolicyOn):ev?y("settings.startupBlocked",h.UI.settings.startupBlocked):y("settings.startupHelp",h.UI.settings.startupHelp)})]}),(0,n.jsx)("div",{className:"ctl",children:!ev&&!(ew||ey)&&(0,n.jsxs)("button",{className:"swt".concat(ex?" on":""),role:"switch","aria-checked":ex,"aria-label":y("settings.startupAria",h.UI.settings.startupAria),disabled:ef,onClick:eI,children:[(0,n.jsx)("i",{"aria-hidden":!0}),(0,n.jsx)("span",{children:ex?(0,n.jsx)(u.T,{k:"settings.on",en:h.UI.settings.on}):(0,n.jsx)(u.T,{k:"settings.off",en:h.UI.settings.off})})]})})]}),(0,n.jsx)("div",{className:"set",style:{alignItems:"flex-start"},children:(0,n.jsxs)("div",{className:"lbl",style:{flex:1},children:[(0,n.jsx)("b",{children:y("settings.watchingHelp",h.UI.settings.watchingHelp)}),0===$.folders.length&&0===Q.length?(0,n.jsx)("span",{children:y("settings.watchingEmpty",h.UI.settings.watchingEmpty)}):(0,n.jsxs)("div",{className:"rule-list",children:[$.folders.map(e=>(0,n.jsxs)("div",{className:"rule-row",children:[(0,n.jsx)("span",{className:"path",children:(0,n.jsx)(g.B,{children:(0,o.oV)(e.path,44)})}),(0,n.jsxs)("span",{className:"rule-why",children:[(0,n.jsx)(g.V,{n:e.projects})," ",1===e.projects?y("settings.watchingProject",h.UI.settings.watchingProject):y("settings.watchingProjects",h.UI.settings.watchingProjects)]}),(0,n.jsx)("button",{className:"b2 q",disabled:U,onClick:()=>ee(e.path),children:y("settings.stopWatching",h.UI.settings.stopWatching)})]},e.path)),Q.map(e=>(0,n.jsx)(p.j,{className:"rule-row gone",what:(0,b.ph)("settings.watchStopped",h.UI.settings.watchStopped,(0,o.oV)(e,44)),onUndo:()=>es(e)},e)),$.unclaimed>0&&(0,n.jsx)("div",{className:"rule-row",children:(0,n.jsxs)("span",{className:"rule-why",children:[(0,n.jsx)(g.V,{n:$.unclaimed})," ",1===$.unclaimed?y("settings.watchingProject",h.UI.settings.watchingProject):y("settings.watchingProjects",h.UI.settings.watchingProjects)," ",y("settings.watchingUnclaimed",h.UI.settings.watchingUnclaimed)]})})]}),W?(0,n.jsxs)("div",{style:{marginBlockStart:8},children:[(0,n.jsx)(l.A,{watched:[],onChanged:()=>{},pick:{label:y("settings.watchingPick",h.UI.settings.watchingPick),onPick:J,already:$.folders.map(e=>e.path),alreadyLabel:y("settings.watchingAlready",h.UI.settings.watchingAlready)}}),(0,n.jsx)("div",{className:"setup-actions",style:{justifyContent:"flex-start",marginBlockStart:6},children:(0,n.jsx)("button",{className:"b2 q",onClick:()=>B(!1),children:(0,n.jsx)(u.T,{k:"btn.done",en:h.UI.common.done})})})]}):(0,n.jsx)("div",{style:{marginBlockStart:8},children:(0,n.jsx)("button",{className:"b",onClick:()=>B(!0),children:y("settings.watchingAdd",h.UI.settings.watchingAdd)})}),F&&(0,n.jsx)("span",{className:"error-line",children:F})]})})]}),"rules"===N&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"sec",children:[(0,n.jsx)("h2",{children:(0,n.jsx)(u.T,{k:"settings.secRules",en:h.UI.settings.secRules})}),(0,n.jsx)("span",{className:"meta",children:y("settings.rulesMeta",h.UI.settings.rulesMeta)})]}),(0,n.jsx)("div",{className:"set",style:{alignItems:"flex-start"},children:(0,n.jsxs)("div",{className:"lbl",style:{flex:1},children:[(0,n.jsx)("b",{children:y("settings.excludeLabel",h.UI.settings.excludeLabel)}),(0,n.jsx)("span",{children:y("settings.excludeHelp",h.UI.settings.excludeHelp)}),et.exclude.length>0&&(0,n.jsx)("div",{className:"rule-list",children:et.exclude.map(e=>(0,n.jsxs)("div",{className:"rule-row",children:[(0,n.jsx)("span",{className:"path",children:(0,o.oV)(e,52)}),(0,n.jsx)("button",{className:"b2 q",disabled:U,onClick:()=>ea(e),children:(0,n.jsx)(u.T,{k:"btn.remove",en:h.UI.common.remove})})]},e))}),R?(0,n.jsxs)("div",{style:{marginBlockStart:8},children:[(0,n.jsx)(l.A,{watched:[],onChanged:()=>{},pick:{label:y("settings.excludePick",h.UI.settings.excludePick),onPick:en,already:et.exclude,alreadyLabel:y("settings.alreadyExcluded",h.UI.settings.alreadyExcluded)}}),(0,n.jsx)("div",{className:"setup-actions",style:{justifyContent:"flex-start",marginBlockStart:6},children:(0,n.jsx)("button",{className:"b2 q",onClick:()=>O(!1),children:(0,n.jsx)(u.T,{k:"btn.done",en:h.UI.common.done})})})]}):(0,n.jsx)("div",{style:{marginBlockStart:8},children:(0,n.jsx)("button",{className:"b",...(0,j.uN)(k.chooseExclude),onClick:()=>O(!0),children:y("settings.chooseFolder",h.UI.settings.chooseFolder)})}),_&&(0,n.jsx)("span",{className:"error-line",children:_})]})})]}),"data"===N&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"sec",children:(0,n.jsx)("h2",{children:(0,n.jsx)(u.T,{k:"settings.secData",en:h.UI.settings.secData})})}),(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:h.UI.firstLight.termsName}),(0,n.jsx)("span",{children:y("settings.documentsHelp",h.UI.settings.documentsHelp)})]}),(0,n.jsx)("div",{className:"ctl",children:(0,n.jsx)("a",{className:"btn",href:"/legal/terms",children:y("settings.documentsOpen",h.UI.settings.documentsOpen)})})]}),(0,n.jsxs)("div",{className:"set",children:[(0,n.jsx)("div",{className:"lbl",children:(0,n.jsx)("b",{children:h.UI.firstLight.privacyName})}),(0,n.jsx)("div",{className:"ctl",children:(0,n.jsx)("a",{className:"btn",href:"/legal/privacy",children:y("settings.documentsOpen",h.UI.settings.documentsOpen)})})]}),(0,n.jsx)("div",{className:"set",children:(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:(0,n.jsx)(g.B,{mono:!0,children:h.UI.settings.dataLabel})}),(0,n.jsx)("span",{children:y("settings.dataHelp",h.UI.settings.dataHelp)})]})}),(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:y("settings.domainLabel",h.UI.settings.domainLabel)}),(0,n.jsx)("span",{children:y("settings.domainHelp",h.UI.settings.domainHelp)})]}),(0,n.jsx)("div",{className:"ctl",children:(0,n.jsxs)("button",{className:"swt".concat(eo?" on":""),role:"switch","aria-checked":eo,disabled:er,onClick:eh,children:[(0,n.jsx)("i",{"aria-hidden":!0}),(0,n.jsx)("span",{children:eo?(0,n.jsx)(u.T,{k:"settings.on",en:h.UI.settings.on}):(0,n.jsx)(u.T,{k:"settings.off",en:h.UI.settings.off})})]})})]}),(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"lbl",children:[(0,n.jsx)("b",{children:y("settings.updateLabel",h.UI.settings.updateLabel)}),(0,n.jsx)("span",{children:!0===v.packaged?y("settings.updatePackaged",h.UI.settings.updatePackaged):y("settings.updateHelp",h.UI.settings.updateHelp)})]}),!0===v.packaged?null:(0,n.jsx)("div",{className:"ctl",children:(0,n.jsxs)("button",{className:"swt".concat(el?" on":""),role:"switch","aria-checked":el,...(0,j.uN)(k.updateSwitch),disabled:C,onClick:ec,children:[(0,n.jsx)("i",{"aria-hidden":!0}),(0,n.jsx)("span",{children:el?(0,n.jsx)(u.T,{k:"settings.on",en:h.UI.settings.on}):(0,n.jsx)(u.T,{k:"settings.off",en:h.UI.settings.off})})]})})]})]}),"how"===N&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"sec",children:(0,n.jsx)("h2",{children:(0,n.jsx)(u.T,{k:"settings.secHow",en:h.UI.settings.secHow})})}),(0,n.jsx)("div",{className:"set",children:(0,n.jsx)("div",{className:"lbl",children:h.UI.settings.how.map((e,s)=>(0,n.jsx)("span",{children:y("settings.how".concat(s+1),e)},e))})}),(0,n.jsx)("div",{className:"set detectors",style:{alignItems:"flex-start"},children:(0,n.jsxs)("div",{className:"lbl",style:{flex:1},children:[(0,n.jsx)("b",{...(0,j.uN)(k.detectors),children:(0,n.jsx)(u.T,{k:"settings.secDetectors",en:h.UI.settings.muteLabel})}),(0,n.jsxs)("span",{children:[y("settings.muteHelp",h.UI.settings.muteHelp),et.muted.length>0?" ".concat(et.muted.length," muted."):""]}),["money","identity","time-capsule","safety","health","site"].map(e=>(0,n.jsxs)("div",{className:"rule-group",children:[(0,n.jsx)("span",{className:"rule-cat",children:(0,n.jsx)(u.T,{k:"cat.".concat(e),en:h.UI.settings.cat[e]})}),(0,n.jsx)("div",{className:"rule-rows",children:r.ZI.filter(s=>s.cat===e).map(e=>{let s=et.muted.includes(e.id);return(0,n.jsxs)("div",{className:"rule-row",...(0,j.uN)(e.blurb),children:[(0,n.jsx)("span",{className:"rule-name",children:e.name}),(0,n.jsxs)("button",{className:"swt".concat(s?"":" on"),role:"switch","aria-checked":!s,...(0,j.uN)(k.muteSwitch),disabled:L===e.id,onClick:()=>ei(e.id,s),children:[(0,n.jsx)("i",{"aria-hidden":!0}),(0,n.jsx)("span",{children:s?(0,n.jsx)(u.T,{k:"settings.muted",en:h.UI.settings.muted}):(0,n.jsx)(u.T,{k:"settings.running",en:h.UI.settings.running})})]})]},e.id)})})]},e))]})})]})]})]})]})}},3364:(e,s,t)=>{"use strict";t.d(s,{j:()=>c});var n=t(5155),a=t(2115),i=t(436),l=t(5310);function c(e){let{what:s,onUndo:t,className:c="tl gone"}=e,r=(0,l.kj)(),[d,o]=(0,a.useState)(!1),[h,u]=(0,a.useState)(null);return(0,n.jsxs)("div",{className:c,role:"status",children:[(0,n.jsx)("b",{children:(0,n.jsx)(l.P,{p:s})}),h&&(0,n.jsx)("span",{className:"error-line",children:h}),(0,n.jsx)("button",{className:"b2 q",disabled:d,onClick:async()=>{var e;o(!0),u(null);let s=await t();o(!1),s.ok||u(null!=(e=s.message)?e:r("common.somethingWrong",i.UI.common.somethingWrong))},children:(0,n.jsx)(l.T,{k:"common.undo",en:i.UI.common.undo})})]})}},9712:(e,s,t)=>{"use strict";t.d(s,{Sc:()=>a,ZI:()=>n});let n=[{id:"paid-sdk",cat:"money",name:"Paid services in dormant projects",blurb:"Projects you haven't opened in a month or more that still reference paid services"},{id:"cloud-config-stale",cat:"money",name:"Deploy configs with no recent work",blurb:"Deploy files (Vercel, Railway, Docker) in projects that stopped moving"},{id:"identity",cat:"identity",name:"Commit identity mismatches",blurb:"Projects committing as a different email than your global identity"},{id:"ssh-keys",cat:"identity",name:"SSH key inventory",blurb:"The keys living in your .ssh folder and how old they are"},{id:"unpushed",cat:"time-capsule",name:"Unpushed commits",blurb:"Commits that exist only on this machine"},{id:"no-remote",cat:"time-capsule",name:"Projects with no remote",blurb:"Projects whose only home is this disk"},{id:"no-upstream",cat:"time-capsule",name:"Branches that push nowhere",blurb:"Local branches with no upstream, so their commits stay on this machine"},{id:"no-git-folder",cat:"time-capsule",name:"Folders with no git at all",blurb:"Watched folders holding work that has no history and no copy elsewhere"},{id:"readme-stub",cat:"time-capsule",name:"README still a placeholder",blurb:"READMEs that still say TODO, with age"},{id:"todo-census",cat:"time-capsule",name:"TODO census",blurb:"TODOs across the estate, eldest quoted"},{id:"abandoned-branches",cat:"time-capsule",name:"Abandoned branches",blurb:"Branches untouched for six months or more"},{id:"anniversary",cat:"time-capsule",name:"Project anniversaries",blurb:"First-commit birthdays coming up"},{id:"inventory-burst",cat:"time-capsule",name:"Large deletions and change bursts",blurb:"Watched folders that lost a lot of files, or had a lot of them change, since the last look"},{id:"file-gone",cat:"time-capsule",name:"Files that disappeared",blurb:"Files that were there last time and are not now, with the command to bring back the ones git still holds"},{id:"sync-folder",cat:"safety",name:"Repos inside sync folders",blurb:"Git repos living inside OneDrive, Dropbox or Google Drive"},{id:"history-secrets",cat:"safety",name:"Key-shaped strings in git history",blurb:"Access-key-shaped strings in the history of publicly-remoted repos"},{id:"gitignore-gaps",cat:"safety",name:".gitignore gaps",blurb:"Repos tracking node_modules, .env or build output"},{id:"dev-server-exposed",cat:"safety",name:"Dev server open to the network",blurb:"Dev scripts binding 0.0.0.0 instead of localhost"},{id:"install-scripts",cat:"safety",name:"Dependencies with install scripts",blurb:"Dependencies that run their own code at install time, named"},{id:"dep-uncommitted",cat:"safety",name:"Installs git has not recorded",blurb:"Dependency lists that changed on disk and have not been committed"},{id:"unbacked-ignored",cat:"safety",name:"Ignored files in a project with no remote",blurb:"Environment files, databases and upload folders git ignores, in projects with nowhere to push"},{id:"node-modules",cat:"health",name:"node_modules weight",blurb:"What your node_modules folders weigh and what dormancy would give back"},{id:"build-artifacts",cat:"health",name:"Build-artifact graveyards",blurb:"Old .next, dist and build folders with sizes"},{id:"runtime-eol",cat:"health",name:"Runtime end of life",blurb:"Your Node.js version against its published support dates"},{id:"disk-weight",cat:"health",name:"Tool caches",blurb:"What the caches other tools leave behind are weighing, not counting node_modules or build folders"},{id:"runtime-census",cat:"health",name:"Runtime census",blurb:"Projects asking for a Node version this machine is not running"},{id:"repo-front-door",cat:"health",name:"README and licence",blurb:"Repositories with a remote that carry neither"},{id:"dep-versions",cat:"health",name:"Same dependency, many versions",blurb:"One dependency installed at several versions across the estate, with sizes"},{id:"dep-arrivals",cat:"health",name:"Dependency arrivals",blurb:"What joined your dependency lists, and the date the project recorded it"},{id:"estate-stats",cat:"health",name:"Estate line count",blurb:"Lines of code and language map - the pride stat"},{id:"duplicate-downloads",cat:"health",name:"Downloads sharing a project's name",blurb:"Downloaded folders whose name matches a project you already have, with sizes"},{id:"deploy-sites",cat:"site",name:"Addresses your projects deploy to",blurb:"Hostnames named by deploy configs in your own repos, offered for watching"},{id:"og-preview",cat:"site",name:"Social share preview",blurb:"The card WhatsApp and LinkedIn render when your link is shared"},{id:"security-headers",cat:"site",name:"Security headers",blurb:"Protective headers your site does or doesn't send"},{id:"mixed-content",cat:"site",name:"Mixed content",blurb:"Secure pages loading pieces over plain http"},{id:"redirect-chain",cat:"site",name:"Redirect chain and www",blurb:"How many hops a visit takes, and whether www agrees with the bare domain"},{id:"robots-blocking",cat:"site",name:"robots.txt blocking all",blurb:"A robots.txt turning every search engine away"},{id:"sitemap-missing",cat:"site",name:"Sitemap missing",blurb:"No sitemap for search engines to read"},{id:"dns-watch",cat:"site",name:"DNS snapshot and changes",blurb:"Your domain's DNS records, and any change since last look"}],a=e=>{var s;return null==(s=n.find(s=>s.id===e))?void 0:s.blurb}}},e=>{e.O(0,[3192,5449,4097,8441,1255,7358],()=>e(e.s=1823)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9437],{1804:(e,s,t)=>{Promise.resolve().then(t.bind(t,4421))},4421:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>I});var i=t(5155),n=t(2115),a=t(7064),r=t(6660),l=t(7897),c=t(5163),d=t(436),o=t(5310),u=t(8106),p=t(3034),m=t(6400),h=t(5834),v=t(1551);function j(e){let{s,cockpit:t}=e,[a,r]=(0,n.useState)(!1),l=(0,o.kj)(),c=s.current,u=!!c&&!c.ok,m=u&&"number"==typeof(null==c?void 0:c.status);return(0,i.jsxs)("div",{className:"irow svcrow".concat(u?" bad":""),children:[(0,i.jsxs)("div",{className:"irow-line",children:[(0,i.jsxs)("button",{className:"irow-main",onClick:()=>r(!a),"aria-expanded":a,children:[(0,i.jsx)("span",{className:"dot ".concat(c?u?"r":"g":"u"),"aria-hidden":!0}),(0,i.jsx)("span",{className:"irow-name",children:s.entry.label}),(0,i.jsx)("span",{className:"irow-truth".concat(u?" bad":""),children:!c||s.checking?(0,i.jsx)(h.h,{children:l("svc.asking",d.UI.sites.svcAsking)}):u?m?(0,i.jsxs)(i.Fragment,{children:[l("svc.errorReply",d.UI.sites.svcErrorReply)," ",(0,i.jsx)(p.V,{n:c.status})]}):l("svc.noAnswer",d.UI.sites.svcNoAnswer):l("svc.answered",d.UI.sites.svcAnswered)}),(0,i.jsx)("span",{className:"irow-path",dir:"ltr",children:s.entry.endpoint})]}),(0,i.jsx)("span",{className:"qk",children:(0,i.jsx)("button",{className:"b2 q danger",onClick:()=>void t.post({action:"removeService",id:s.entry.id}).then(()=>t.readServices()),children:(0,i.jsx)(o.T,{k:"svc.remove",en:d.UI.sites.removeService})})})]}),a&&(0,i.jsxs)("div",{className:"irow-detail",children:[(0,i.jsx)("p",{children:"status"===s.entry.endpointKind?l("svc.viaStatus",d.UI.sites.svcViaStatus):l("svc.viaHome",d.UI.sites.svcViaHome)}),(0,i.jsx)("p",{className:"svc-bound",children:l("svc.notTheWorld",d.UI.sites.svcNotTheWorld)})]})]})}function x(e){var s,t;let{cockpit:n}=e;(0,o.kj)();let a=function(e,s){let t=new Map((null!=s?s:[]).map(e=>[e.entry.id,e]));return e.map(e=>{let s=t.get(e.id);return s?{...s,entry:e}:{entry:e,current:null,since:null}})}(null!=(t=null==(s=n.cfg)?void 0:s.services)?t:[],n.services);return 0===a.length?null:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{className:"sec",children:[(0,i.jsx)("h2",{children:(0,i.jsx)(o.T,{k:"sites.groupServices",en:d.UI.sites.groupServices})}),(0,i.jsxs)("span",{className:"meta",children:[(0,i.jsx)(p.V,{n:a.length})," \xb7 ",(0,i.jsx)(o.T,{k:"sites.servicesPurpose",en:d.UI.sites.servicesPurpose})]})]}),(0,i.jsx)("div",{className:"irows",children:a.map(e=>(0,i.jsx)(j,{s:e,cockpit:n},e.entry.id))})]})}function g(e){var s,t;let{presets:a,cockpit:r}=e,l=(0,o.kj)(),[c,u]=(0,n.useState)(null),[p,m]=(0,n.useState)(null),h=new Set((null!=(t=null==(s=r.cfg)?void 0:s.services)?t:[]).map(e=>e.service)),v=a.filter(e=>!h.has(e.service));if(0===a.length)return(0,i.jsx)("p",{className:"svc-bound",children:l("svc.noPresets",d.UI.sites.servicesNoPresets)});async function j(e){var s;u(e),m(null);let t=await r.post({action:"addService",service:e});t.ok?await r.readServices():m(null!=(s=t.message)?s:null),u(null)}return(0,i.jsxs)(i.Fragment,{children:[0===h.size&&(0,i.jsx)("p",{className:"svc-bound",children:l("svc.noneAdded",d.UI.sites.servicesNoneAdded)}),v.length>0&&(0,i.jsxs)("p",{className:"svc-add",children:[(0,i.jsx)("span",{className:"k",children:l("svc.add",d.UI.sites.addService)})," ",v.map(e=>(0,i.jsx)("button",{className:"b2 q",disabled:null!==c,onClick:()=>void j(e.service),children:e.label},e.service))]}),p&&(0,i.jsx)("span",{className:"error-line",children:p})]})}function N(e){let{name:s,count:t,onRemove:a}=e,r=(0,o.kj)(),[l,c]=(0,n.useState)(!1);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{className:"sec",children:[(0,i.jsx)("h2",{children:s}),(0,i.jsxs)("span",{className:"meta",children:[(0,i.jsx)(p.V,{n:t})," ",1===t?r("sites.unitSite",d.UI.sites.unitSite):r("sites.unitSites",d.UI.sites.unitSites)]}),a&&(0,i.jsx)("div",{className:"tools",children:(0,i.jsx)("button",{className:"b".concat(l?" on":""),onClick:()=>c(!l),"aria-expanded":l,children:r("sites.removeGroup",d.UI.sites.removeGroup)})})]}),l&&a&&(0,i.jsxs)("p",{className:"ok-line",children:[r("sites.removeGroupNote",d.UI.sites.removeGroupNote)," ",(0,i.jsx)("button",{className:"b2 danger",onClick:()=>{c(!1),a()},children:r("sites.removeGroup",d.UI.sites.removeGroup)})]})]})}function k(e){let{cockpit:s,onAdded:t}=e,[a,r]=(0,n.useState)(""),[l,c]=(0,n.useState)(null),u=(0,o.kj)();return(0,i.jsxs)("form",{className:"setup",onSubmit:async e=>{var i;if(e.preventDefault(),!a.trim())return;let n=await s.post({action:"addGroup",name:a.trim()});n.ok?(r(""),c(null),null==t||t()):c(null!=(i=n.message)?i:u("common.somethingWrong",d.UI.common.somethingWrong))},children:[(0,i.jsxs)("div",{className:"addrow",children:[(0,i.jsx)("input",{className:"in",type:"text",value:a,autoFocus:!0,"aria-label":u("sites.groupNameAria",d.UI.sites.groupNameAria),placeholder:u("sites.groupNamePlaceholder",d.UI.sites.groupNamePlaceholder),onChange:e=>r(e.target.value)}),(0,i.jsx)("button",{className:"btn primary",type:"submit",disabled:!a.trim(),children:u("sites.createGroup",d.UI.sites.createGroup)})]}),l&&(0,i.jsx)("p",{className:"error-line",children:l})]})}function b(e){let{cockpit:s,siteId:t,groups:n,current:a}=e,r=(0,o.kj)();return 0===n.length?null:(0,i.jsxs)("select",{className:"in gsel",value:null!=a?a:"","aria-label":r("sites.fileIn",d.UI.sites.fileIn),onChange:e=>void s.post({action:"setSiteGroup",id:t,group:e.target.value||null}),children:[(0,i.jsx)("option",{value:"",children:r("sites.groupYours",d.UI.sites.groupYours)}),n.map(e=>(0,i.jsx)("option",{value:e.id,children:e.name},e.id))]})}let y=[{service:"github",label:"GitHub",endpoint:"https://www.githubstatus.com/api/v2/status.json",endpointKind:"status"},{service:"cloudflare",label:"Cloudflare",endpoint:"https://www.cloudflarestatus.com/api/v2/status.json",endpointKind:"status"},{service:"vercel",label:"Vercel",endpoint:"https://www.vercel-status.com/api/v2/status.json",endpointKind:"status"},{service:"netlify",label:"Netlify",endpoint:"https://www.netlifystatus.com/api/v2/status.json",endpointKind:"status"},{service:"npm",label:"npm",endpoint:"https://status.npmjs.org/api/v2/status.json",endpointKind:"status"},{service:"railway",label:"Railway",endpoint:"https://railway.com/",endpointKind:"home"}];function I(){var e,s,t,j;let I=(0,r.x)(),[w,U]=(0,n.useState)(null),[f,S]=(0,n.useState)(!1),[A,G]=(0,n.useState)(!1),{urls:C,health:T,incidents:P,attention:V}=I,{requestIgnore:R,overlays:F}=(0,l.Wj)(I),K=null!=(t=I.views.urls)?t:"cards",W=e=>(0,c.YV)(V,e),_=e=>"red"===e?2:+("amber"===e),q=[...C].sort((e,s)=>_(W(s.entry.id))-_(W(e.entry.id))),M=q.filter(e=>{var s;return null==(s=e.current)?void 0:s.ok}).length,Y=e=>U(s=>s===e?null:e),E=(0,v.$c)(null==(e=I.cfg)?void 0:e.lang),H=(e,s)=>(0,v.tr)(E,e,s),L="ar"===E,B=null!=(j=null==(s=I.cfg)?void 0:s.siteGroups)?j:[],D=e=>B.some(s=>s.id===e.entry.group)?e.entry.group:void 0,O=e=>{let s=(e,s)=>(0,i.jsx)(b,{cockpit:I,siteId:e,groups:B,current:s});return"cards"===K?(0,i.jsx)("div",{className:"grid",children:e.map(e=>(0,i.jsx)(l.ct,{u:e,tone:W(e.entry.id),cockpit:I,incident:(0,l.G2)(P,e.entry.id),open:w===e.entry.id,onToggle:()=>Y(e.entry.id),onIgnoreRequest:R,extra:s(e.entry.id,D(e))},e.entry.id))}):(0,i.jsx)("div",{className:"irows",children:e.map(e=>(0,i.jsx)(l.kc,{u:e,tone:W(e.entry.id),cockpit:I,incident:(0,l.G2)(P,e.entry.id),open:w===e.entry.id,onToggle:()=>Y(e.entry.id),onIgnoreRequest:R,extra:s(e.entry.id,D(e))},e.entry.id))})};return(0,i.jsxs)(a.Ay,{active:"/sites",cockpit:I,children:[(0,i.jsxs)("div",{className:"pagebar",children:[(0,i.jsx)("h1",{children:(0,i.jsx)(o.T,{k:"room.sites",en:d.UI.sites.title})}),(0,i.jsx)("span",{className:"purpose",children:(0,i.jsx)(o.T,{k:"sites.purpose",en:d.UI.sites.purpose})})]}),T?0===C.length?(0,i.jsxs)("div",{className:"empty",children:[(0,i.jsx)("p",{className:"invite",children:H("sites.emptyInvite",d.UI.sites.emptyInvite)}),(0,i.jsx)("p",{children:H("sites.emptyLine",d.UI.sites.emptyLine)}),(0,i.jsxs)("div",{className:"setup-actions",children:[(0,i.jsx)("button",{className:"btn ".concat(f?"":"primary"),"aria-pressed":f,onClick:()=>S(!f),children:f?H("btn.back",d.UI.radar.emptyBack):H("empty.pickSite",d.UI.radar.emptyPickSite)}),(0,i.jsx)("a",{className:"btn",href:"/radar",children:H("btn.goRadar",d.UI.sites.goRadar)})]}),f&&(0,i.jsx)(u.T,{cockpit:I,onAdded:()=>S(!1)})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{className:"sec",children:[(0,i.jsx)("h2",{children:(0,i.jsx)(o.T,{k:"sec.sites",en:d.UI.radar.sites})}),(0,i.jsxs)("span",{className:"meta",children:[L?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(p.V,{n:M})," ",H("sites.answeringMid","")," ",(0,i.jsx)(p.V,{n:C.length})," ",H("sites.answeringTail","")]}):d.UI.sites.answering(M,C.length)," \xb7 ",(0,i.jsx)(o.T,{k:"radar.sitesMeta",en:d.UI.radar.sitesMeta})]}),(0,i.jsxs)("div",{className:"tools",children:[(0,i.jsx)("button",{className:"b ".concat(f?"on":""),"aria-pressed":f,"aria-expanded":f,onClick:()=>S(!f),children:f?H("btn.back",d.UI.radar.emptyBack):H("empty.pickSite",d.UI.radar.emptyPickSite)}),(0,i.jsx)("button",{className:"b","aria-pressed":A,"aria-expanded":A,onClick:()=>G(!A),children:(0,i.jsx)(o.T,{k:"sites.newGroup",en:d.UI.sites.newGroup})}),(0,i.jsx)(l.aA,{view:K,onChange:e=>I.setView("urls",e)})]})]}),f&&(0,i.jsx)(u.T,{cockpit:I,onAdded:()=>S(!1)}),A&&(0,i.jsx)(k,{cockpit:I,onAdded:()=>G(!1)}),B.length>0&&(0,i.jsx)(N,{name:H("sites.groupYours",d.UI.sites.groupYours),count:q.filter(e=>!D(e)).length}),O(q.filter(e=>!D(e)))]}):(0,i.jsxs)("div",{className:"sweep-wrap",children:[(0,i.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,i.jsx)("span",{children:(0,i.jsx)(h.h,{children:H("sites.checking",d.UI.sites.checking)})})]}),B.map(e=>{let s=q.filter(s=>D(s)===e.id);return(0,i.jsxs)("div",{children:[(0,i.jsx)(N,{name:e.name,count:s.length,onRemove:()=>void I.post({action:"removeGroup",id:e.id})}),O(s)]},e.id)}),(0,i.jsx)(x,{cockpit:I}),(0,i.jsx)(g,{presets:y,cockpit:I}),(0,i.jsx)(m.LZ,{cockpit:I}),F]})}},8106:(e,s,t)=>{"use strict";t.d(s,{T:()=>l});var i=t(5155),n=t(2115),a=t(436),r=t(5310);function l(e){let{cockpit:s,onAdded:t}=e,[l,c]=(0,n.useState)(""),[d,o]=(0,n.useState)(""),[u,p]=(0,n.useState)(!1),[m,h]=(0,n.useState)(null),v=(0,r.kj)(),j=async e=>{var i;if(e.preventDefault(),!l.trim())return;p(!0),h(null);let n=await s.post({action:"addUrl",url:l.trim(),label:d.trim()||void 0});p(!1),n.ok?(c(""),o(""),h({ok:!0,text:v("site.added",a.UI.radar.siteAdded)}),s.readHealth(),null==t||t()):h({ok:!1,text:null!=(i=n.message)?i:v("common.somethingWrong",a.UI.common.somethingWrong)})};return(0,i.jsxs)("form",{className:"setup",onSubmit:j,children:[(0,i.jsxs)("div",{className:"addrow",children:[(0,i.jsx)("input",{className:"in",type:"text",inputMode:"url",dir:"ltr",value:l,"aria-label":v("site.addrAria",a.UI.radar.siteAddrAria),placeholder:a.UI.radar.sitePlaceholder,onChange:e=>c(e.target.value)}),(0,i.jsx)("input",{className:"in",type:"text",value:d,"aria-label":v("site.nameAria",a.UI.radar.siteNameAria),placeholder:v("site.namePlaceholder",a.UI.radar.siteNamePlaceholder),onChange:e=>o(e.target.value)}),(0,i.jsx)("button",{className:"btn primary",type:"submit",disabled:u||!l.trim(),children:u?v("site.adding",a.UI.radar.siteAdding):v("site.add",a.UI.radar.siteAdd)})]}),m&&(0,i.jsx)("p",{className:m.ok?"ok-line":"error-line",children:m.text})]})}}},e=>{e.O(0,[3192,5449,7897,8441,1255,7358],()=>e(e.s=1804)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--void:#0A0D14;--panel:#0F1420;--raise:#151B2A;--inset:#0E1526;--line:#232B3D;--line2:rgba(148,163,214,.20);--text:#E7ECF4;--dim:#9AA6BC;--faint:#5C6880;--ok:#3ECF8E;--warn:#E8B23D;--bad:#E5534B;--info:#8FB8FF;--accent:#4D7FFF;--accent-ink:#0B1B36;--chip-warn-bg:color-mix(in srgb,var(--warn) 16%,transparent);--chip-warn-ink:var(--warn);--chip-bad-bg:color-mix(in srgb,var(--bad) 16%,transparent);--chip-bad-ink:var(--bad);--f-display:var(--font-display),var(--font-arabic),system-ui,sans-serif;--f-ui:var(--font-ui),var(--font-arabic),system-ui,sans-serif;--f-mono:var(--font-mono),var(--font-arabic),ui-monospace,Consolas,monospace}[data-theme=light]{--void:#F4F6FA;--panel:#FFFFFF;--raise:#EBEFF6;--line:#D5DBE7;--text:#141A26;--dim:#5A6478;--faint:#7A8398;--ok:#137A54;--warn:#A66A05;--chip-warn-bg:#FBEFD6;--chip-warn-ink:#8A5804;--bad:#DC2626;--chip-bad-bg:#FDE3E3;--chip-bad-ink:#B01B1B;--accent:#2B5FD0;--accent-ink:#FFFFFF;--line2:#C3CBDB;--inset:#E8EDF6;--info:#2B6FE3}*{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark}[data-theme=light]{color-scheme:light}body{background:radial-gradient(1100px 600px at 82% -15%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 55%),var(--void);color:var(--text);font-family:var(--f-ui);font-size:14px;line-height:1.45}.mono{font-family:var(--f-mono)}button{font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}}.horizon{block-size:3px}.horizon.quiet{background:linear-gradient(90deg,transparent,var(--ok) 18%,var(--ok) 82%,transparent);box-shadow:0 0 20px color-mix(in srgb,var(--ok) 40%,transparent)}.horizon.needs{background:linear-gradient(90deg,transparent,var(--warn) 18%,var(--warn) 82%,transparent);box-shadow:0 0 20px color-mix(in srgb,var(--warn) 40%,transparent)}.horizon.incident{background:linear-gradient(90deg,transparent,var(--bad) 18%,var(--bad) 82%,transparent);box-shadow:0 0 20px color-mix(in srgb,var(--bad) 45%,transparent)}.horizon.idle{background:linear-gradient(90deg,transparent,var(--line2) 18%,var(--line2) 82%,transparent)}.shell{display:grid;grid-template-columns:176px minmax(0,1fr) 240px;min-block-size:100vh}@media (max-width:1100px){.shell{grid-template-columns:176px minmax(0,1fr)}.rail{display:none}}.rail{-webkit-border-start:1px solid var(--line);border-inline-start:1px solid var(--line);padding:20px 16px;display:flex;flex-direction:column;gap:14px;position:-webkit-sticky;position:sticky;inset-block-start:0;block-size:100vh}.raillog{flex:1 1 auto;min-block-size:0}.rail .next{flex:0 0 auto}.rail .next,.rail .pl{overflow-wrap:break-word;word-break:normal;-webkit-hyphens:none;hyphens:none}.rail h3{font:600 12px var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--faint);display:flex;align-items:center;gap:8px}.rail h3 i{inline-size:6px;block-size:6px;border-radius:50%;background:var(--ok);font-style:normal;box-shadow:0 0 8px color-mix(in srgb,var(--ok) 60%,transparent);animation:blink 2s infinite}@keyframes blink{50%{opacity:.4}}.pulse{display:grid;grid-gap:7px;gap:7px}.pl{font:400 12px var(--f-mono);color:var(--dim);line-height:1.5;-webkit-padding-start:14px;padding-inline-start:14px;position:relative}.pl:before{content:"›";position:absolute;inset-inline-start:0;color:var(--faint)}.pl.now{color:var(--text)}.raillink{color:inherit;text-decoration:none}.raillink:focus-visible,.raillink:hover{color:var(--dim);text-decoration:underline}.pl .ok-t,.pl.now:before{color:var(--ok)}.pl .dim-t{color:var(--faint)}.pl .bad-t{color:var(--bad)}.raillog{-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-padding-before:12px;padding-block-start:12px;display:flex;flex-direction:column;gap:7px}.raillog h3{-webkit-margin-after:1px;margin-block-end:1px;flex-wrap:wrap}.raillog h3 .railread{flex:0 0 100%}.rail .next{-webkit-margin-before:2px;margin-block-start:2px;-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-padding-before:12px;padding-block-start:12px;font:400 12px var(--f-mono);color:var(--faint);line-height:1.7}.rail .next b{color:var(--dim);font-weight:500}.side{-webkit-border-end:1px solid var(--line);border-inline-end:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;inset-block-start:0;block-size:100vh}.nav{flex:1 1 auto;min-block-size:0;overflow-y:auto}.nav-pinned{flex:0 0 auto;overflow:visible;-webkit-margin-before:10px;margin-block-start:10px;-webkit-margin-after:10px;margin-block-end:10px}.brand{display:flex;align-items:center;gap:8px;font-size:19px;padding-inline:10px;-webkit-margin-after:20px;margin-block-end:20px;text-decoration:none}.brand,.word{font-family:var(--f-display);font-weight:800;color:var(--text)}.word{white-space:nowrap;direction:ltr}.word,.word em{letter-spacing:0}.word em{font-style:normal;color:var(--accent);margin:0;padding:0}.mark{inline-size:26px;block-size:26px;flex-shrink:0}.mark.scanning{animation:markspin 1.6s linear infinite;transform-origin:center}@keyframes markspin{to{transform:rotate(1turn)}}.nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;text-decoration:none;color:var(--dim);font-weight:500;font-size:13.5px}.nav a:hover{color:var(--text);background:color-mix(in srgb,var(--dim) 6%,transparent)}.nav a .nicon{inline-size:16px;block-size:16px;flex-shrink:0;color:var(--faint)}.nav a:hover .nicon{color:var(--dim)}.nav a.on .nicon{color:var(--accent)}.nav a.on{color:var(--text);background:color-mix(in srgb,var(--accent) 12%,transparent);box-shadow:inset 2px 0 0 var(--accent)}[dir=rtl] .nav a.on{box-shadow:inset -2px 0 0 var(--accent)}.nav .n{-webkit-margin-start:auto;margin-inline-start:auto;font:600 12px var(--f-ui);background:var(--chip-warn-bg);color:var(--chip-warn-ink);border-radius:99px;padding:1px 7px}.nav .n.bad{background:var(--chip-bad-bg);color:var(--chip-bad-ink)}.nav .soon{font:500 12px var(--f-mono)}.nav .cnt,.nav .soon{-webkit-margin-start:auto;margin-inline-start:auto;color:var(--faint)}.nav .cnt{font:400 12px var(--f-mono)}.nav .cnt+.soon,.nav .n+.cnt{-webkit-margin-start:6px;margin-inline-start:6px}.siderow{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin:14px 10px 0}.siderow .modeseg{margin:0;min-inline-size:0}.siderow .kbtn{text-align:center}.modeseg{display:flex;margin:14px 10px 0;background:var(--inset);border:1px solid var(--line2);border-radius:8px;padding:2px}.modeseg button{flex:1 1;font:600 12px var(--f-ui);padding:5px 0;border:none;background:none;color:var(--faint);cursor:pointer;border-radius:6px;white-space:nowrap}.modeseg button.on{background:var(--panel);color:var(--text);box-shadow:0 1px 4px color-mix(in srgb,var(--void) 15%,transparent)}.side-foot{-webkit-margin-before:auto;margin-block-start:auto;padding-inline:10px;display:grid;grid-gap:10px;gap:10px}.side-foot .b{inline-size:100%}.foot{font-size:12px;color:var(--faint);line-height:1.5}.foot a{color:inherit}.foot a:hover{color:var(--accent)}.foot .link{color:inherit;font-weight:inherit;text-decoration:underline}.foot .link:hover{color:var(--accent)}main{padding:22px 28px 48px;max-inline-size:1160px;inline-size:100%;-webkit-margin-start:0;margin-inline-start:0}.appbar{display:flex;align-items:center;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 14px;-webkit-margin-after:16px;margin-block-end:16px;flex-wrap:wrap}.appbar .brand{font-size:15px;margin:0;padding:0;gap:7px}.appbar .brand .mark{inline-size:20px;block-size:20px}.appbar .room{font:600 13px var(--f-ui);color:var(--dim);-webkit-padding-start:12px;padding-inline-start:12px;-webkit-border-start:1px solid var(--line2);border-inline-start:1px solid var(--line2)}.appbar .right{-webkit-margin-start:auto;margin-inline-start:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.kbtn{font:600 12px var(--f-ui);padding:5px 10px;border-radius:7px;cursor:pointer;border:1px solid var(--line2);background:var(--raise);color:var(--dim);white-space:nowrap}.kbtn:hover{color:var(--text);border-color:var(--accent)}.appbar .scan{padding:6px 13px}.radar-head{display:flex;align-items:center;justify-content:space-between;gap:20px;-webkit-padding-after:14px;padding-block-end:14px;-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line);-webkit-margin-after:18px;margin-block-end:18px;flex-wrap:wrap}.rh-left .greet{font-family:var(--f-display);font-weight:600;font-size:16px;color:var(--dim)}.radar-verdict{margin-block:14px 20px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.radar-verdict .state{font-family:var(--f-display);font-weight:700;font-size:26px;line-height:1.1;color:var(--warn)}.radar-verdict.ok .state{color:var(--ok)}.radar-verdict.bad .state{color:var(--bad)}.radar-verdict.idle .state{color:var(--dim)}.radar-verdict .reason{font-size:13px;color:var(--dim);-webkit-margin-before:5px;margin-block-start:5px}.radar-verdict .radius{-webkit-margin-before:14px;margin-block-start:14px;-webkit-padding-start:13px;padding-inline-start:13px;-webkit-border-start:3px solid var(--line2);border-inline-start:3px solid var(--line2)}.radar-verdict .radius.risk{border-inline-start-color:var(--warn)}.radar-verdict .radius.ok{border-inline-start-color:var(--ok)}.radar-verdict .radius-head{font-family:var(--f-display);font-weight:700;font-size:19px;line-height:1.25;color:var(--text)}.radar-verdict .radius.ok .radius-head{color:var(--ok)}.radar-verdict .radius-under{font-size:12.5px;color:var(--dim);-webkit-margin-before:4px;margin-block-start:4px}.radar-verdict .radius-excluded{font:400 12px var(--f-mono);color:var(--faint);-webkit-margin-before:5px;margin-block-start:5px}.radar-verdict button.radius{display:block;inline-size:100%;text-align:start;font:inherit;color:inherit;background:none;border:0;-webkit-border-start:3px solid var(--line2);border-inline-start:3px solid var(--line2);padding-block:0}.radar-verdict button.radius.jump{cursor:pointer}.radar-verdict button.radius.jump:hover .radius-head{filter:brightness(1.08)}.radar-verdict button.radius.jump:hover .radius-hint{color:var(--dim)}.radar-verdict .radius-hint{display:block;font:400 11.5px var(--f-mono);color:var(--dim);-webkit-margin-before:6px;margin-block-start:6px}.rh-right{display:flex;flex-direction:column;align-items:flex-end;gap:9px;-webkit-padding-before:4px;padding-block-start:4px}.rh-right .row1{justify-content:flex-end}.rh-right .row1,.session{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.session{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;-webkit-margin-after:4px;margin-block-end:4px;position:relative;overflow:hidden}.session:before{content:"";position:absolute;inset-block-start:0;inset-inline-start:12px;inline-size:34px;block-size:3px;border-radius:0 0 3px 3px;background:var(--info)}.session .k{font:500 12px var(--f-mono);letter-spacing:.12em;color:var(--faint);text-transform:uppercase;white-space:nowrap}.session b{font-size:13.5px;font-weight:600}.session .fact{font-size:12.5px;color:var(--dim)}.session .fact em{font-style:normal;color:var(--warn);font-weight:600}.session .branch{font:400 12px var(--f-mono);color:var(--faint)}.session .acts{-webkit-margin-start:auto;margin-inline-start:auto;display:flex;gap:6px;flex-wrap:wrap}.session .subk{flex-basis:100%;font-size:12px;color:var(--faint);-webkit-margin-before:-2px;margin-block-start:-2px}.need.jumped{border-color:var(--accent)}@media (prefers-reduced-motion:no-preference){.need.jumped{animation:needflash 1.3s ease-out both}}@keyframes needflash{0%{background:color-mix(in srgb,var(--accent) 14%,var(--panel))}to{background:var(--panel)}}.pagebar{display:flex;align-items:center;gap:14px;-webkit-margin-after:14px;margin-block-end:14px;flex-wrap:wrap}h1{font-family:var(--f-display);font-weight:700;font-size:21px}.purpose{color:var(--dim);font-size:12.5px;-webkit-padding-before:3px;padding-block-start:3px}.statuspill{-webkit-margin-start:auto;margin-inline-start:auto;display:flex;align-items:center;gap:8px;font-weight:600;font-size:12.5px;border-radius:99px;padding:5px 13px;background:color-mix(in srgb,var(--warn) 10%,transparent);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent);color:var(--warn)}.statuspill i{inline-size:7px;block-size:7px;border-radius:50%;background:var(--warn);font-style:normal;box-shadow:0 0 8px color-mix(in srgb,var(--warn) 60%,transparent)}.statuspill.ok{background:color-mix(in srgb,var(--ok) 10%,transparent);border-color:color-mix(in srgb,var(--ok) 35%,transparent);color:var(--ok)}.statuspill.ok i{background:var(--ok);box-shadow:0 0 8px color-mix(in srgb,var(--ok) 60%,transparent)}.statuspill.bad{background:color-mix(in srgb,var(--bad) 10%,transparent);border-color:color-mix(in srgb,var(--bad) 35%,transparent);color:var(--bad)}.statuspill.bad i{background:var(--bad);box-shadow:0 0 8px color-mix(in srgb,var(--bad) 60%,transparent)}.statuspill.idle{background:color-mix(in srgb,var(--dim) 8%,transparent);border-color:var(--line2);color:var(--dim)}.statuspill.idle i{background:var(--line2);box-shadow:none}.scan{font:600 12.5px var(--f-ui);background:var(--accent);color:var(--accent-ink);border:none;border-radius:8px;padding:7px 14px;cursor:pointer}.scan:hover{filter:brightness(1.08)}.scan:disabled{opacity:.6;cursor:default}.looked{font:400 12px var(--f-mono);color:var(--faint)}.sec{display:flex;align-items:baseline;gap:10px;margin:20px 0 10px}.sec h2{font-size:14px;font-weight:600}.sec .meta{font:400 12px var(--f-mono);color:var(--faint)}.pagebar .tools,.sec .tools{-webkit-margin-start:auto;margin-inline-start:auto;display:flex;gap:6px;align-items:center}.viewseg{display:flex;background:var(--inset);border:1px solid var(--line2);border-radius:7px;padding:2px}.viewseg button{font:600 12px var(--f-ui);padding:3px 10px;border:none;background:none;color:var(--faint);cursor:pointer;border-radius:5px}.viewseg button.on{background:var(--panel);color:var(--text);box-shadow:0 1px 4px color-mix(in srgb,var(--void) 15%,transparent)}.linkbtn{font:500 12px var(--f-ui);color:var(--info);background:none;border:none;cursor:pointer;padding:0}.linkbtn:hover{text-decoration:underline}.collapse{font:500 12px var(--f-ui);color:var(--faint);background:none;border:none;cursor:pointer}.collapse:hover{color:var(--dim)}.seeall{font:600 12px var(--f-ui);color:var(--accent);text-decoration:none;white-space:nowrap}.seeall:hover{text-decoration:underline}.cleanline{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--dim);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;-webkit-margin-before:8px;margin-block-start:8px;flex-wrap:wrap}.cleanline .okw{color:var(--ok)}.cleanline .seeall{-webkit-margin-start:auto;margin-inline-start:auto}.secline{block-size:1px;background:var(--line);border:none;margin:22px 0 0}.need{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px 12px;-webkit-margin-after:6px;margin-block-end:6px;flex-wrap:wrap;position:relative;overflow:visible}.need:before{content:"";position:absolute;inset-block-start:0;inset-block-end:0;inset-inline-start:0;inline-size:3px;block-size:auto;border-radius:9px 0 0 9px;background:var(--warn)}.need.bad:before{background:var(--bad)}.need.handled{opacity:.65}.need.open{border-end-start-radius:0;border-end-end-radius:0;-webkit-margin-after:0;margin-block-end:0}.need .txt{min-inline-size:0;flex:1 1 auto;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.need .txt b{font-size:13px;font-weight:600}.need .txt span{font-size:12px;color:var(--faint)}.need .age{font:400 12px var(--f-mono);color:var(--faint);white-space:nowrap;flex-shrink:0}.need .acts{display:flex;gap:5px;align-items:center;flex-shrink:0}.need .handled-note{flex-basis:100%;-webkit-margin-before:0;margin-block-start:0}.need .tag{font:600 9.5px var(--f-mono);letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;border-radius:99px;white-space:nowrap;flex-shrink:0}.need .tag.losable{background:color-mix(in srgb,var(--warn) 14%,transparent);color:var(--warn)}.need .tag.money{background:none;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--warn) 45%,transparent);color:var(--warn)}.need .tag.hygiene{background:color-mix(in srgb,var(--info) 12%,transparent);color:var(--info)}.need.propose:before{background:var(--info)}.need.propose .glyph{display:inline-flex;color:var(--info);flex-shrink:0}.need.propose .txt .changed{flex-basis:100%;font-size:12px;color:var(--faint)}.need-draw{background:var(--inset);border:1px solid var(--line);-webkit-border-before:none;border-block-start:none;border-radius:0 0 9px 9px;-webkit-margin-after:6px;margin-block-end:6px;padding:8px 12px}.need-draw .draw-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-inline-size:0}.need-draw .draw-line .k{font:500 12px var(--f-mono);letter-spacing:.1em;color:var(--faint);text-transform:uppercase}.need-draw .draw-line .mono{font:400 12px var(--f-mono);color:var(--dim);overflow-wrap:anywhere;min-inline-size:0;-webkit-user-select:all;-moz-user-select:all;user-select:all}.need-draw .draw-line>button:last-child{-webkit-margin-start:auto;margin-inline-start:auto}.need-detail{display:grid;grid-gap:5px;gap:5px;font-size:12px;color:var(--dim)}.need-draw .draw-line+.need-detail{-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-margin-before:8px;margin-block-start:8px;-webkit-padding-before:8px;padding-block-start:8px}.need-detail .k{font:500 12px var(--f-mono);letter-spacing:.12em;color:var(--faint);text-transform:uppercase}.need-detail .mono{font-size:12px;color:var(--faint);overflow-wrap:anywhere}.need-detail.rec{color:var(--text)}.need-detail.rec:focus{outline:none}.need-detail.rec:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.need-detail+.draw-line,.need-detail+.need-detail{-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-margin-before:8px;margin-block-start:8px;-webkit-padding-before:8px;padding-block-start:8px}.need-detail.cmds>button{justify-self:start;-webkit-margin-before:3px;margin-block-start:3px}.b2{font:600 12px var(--f-ui);padding:4px 10px;border-radius:6px;cursor:pointer;border:1px solid var(--line2);background:var(--raise);color:var(--text);white-space:nowrap}.b2:hover{border-color:var(--accent);color:var(--accent)}.b2:disabled{opacity:.6;cursor:default}.b2.q{background:none;border-color:transparent;color:var(--faint)}.b2.q:hover{color:var(--text);border-color:var(--line2)}.b2.on{color:var(--accent);border-color:var(--accent)}.b2.danger{color:var(--bad)}.b2.danger:hover{color:var(--bad);border-color:var(--bad)}a.b2{text-decoration:none;display:inline-block}.ovf{position:relative;display:inline-flex}.ovf-btn{font:600 12px var(--f-ui);padding:4px 9px;border-radius:6px;cursor:pointer;border:1px solid transparent;background:none;color:var(--faint);white-space:nowrap}.ovf-btn:hover,.ovf-btn[aria-expanded=true]{color:var(--text);border-color:var(--line2)}.ovf-menu{position:fixed;z-index:60;min-inline-size:190px;display:flex;flex-direction:column;gap:1px;padding:5px;background:var(--raise);border:1px solid var(--line2);border-radius:9px;box-shadow:0 10px 28px color-mix(in srgb,var(--void) 50%,transparent)}.ovf-menu button{display:flex;align-items:center;gap:9px;text-align:start;font:500 12.5px var(--f-ui);color:var(--text);background:none;border:none;border-radius:6px;padding:7px 10px;cursor:pointer;white-space:nowrap}.ovf-menu button:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}.ovf-menu button span{font-size:12px;color:var(--faint);-webkit-margin-start:auto;margin-inline-start:auto;font-weight:400}.ovf-menu button.danger{color:var(--bad)}.tip{position:fixed;z-index:70;pointer-events:none;max-inline-size:340px;font:400 12px var(--f-mono);line-height:1.5;border:1px solid var(--line2);border-radius:6px;padding:7px 10px;box-shadow:0 6px 20px color-mix(in srgb,var(--void) 45%,transparent)}.b,.tip{color:var(--text);background:var(--raise)}.b{font:600 12px var(--f-ui);padding:5px 11px;border-radius:7px;cursor:pointer;border:1px solid var(--line2)}.b:hover{background:color-mix(in srgb,var(--raise) 80%,var(--text) 8%)}.b:disabled{opacity:.6;cursor:default}.b.q{background:none;border-color:transparent;color:var(--faint)}.b.q:hover{color:var(--text)}.b.accent{background:var(--accent);border-color:transparent;color:var(--accent-ink)}.b.accent:hover{filter:brightness(1.08)}.b.danger{color:var(--bad)}.b.danger:hover{border-color:var(--bad)}.grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}.grid.three{grid-template-columns:repeat(3,1fr)}@media (max-width:1280px){.grid{grid-template-columns:repeat(3,1fr)}.grid.three{grid-template-columns:repeat(2,1fr)}}@media (max-width:860px){.grid,.grid.three{grid-template-columns:repeat(2,1fr)}}.card{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:11px 13px;position:relative;overflow:hidden}.card.bad:before,.card.warn:before{content:"";position:absolute;inset-block-start:0;inset-block-end:0;inset-inline-start:0;inline-size:3px;block-size:auto;border-radius:11px 0 0 11px;background:var(--warn)}.card.bad:before{background:var(--bad)}.card.plain:before{background:var(--line2)}.card:hover{border-color:var(--line2)}.card.pinned .c-top b:after{content:" ⚑";color:var(--accent);font-size:12px}.c-top{display:flex;align-items:center;gap:7px;-webkit-margin-after:5px;margin-block-end:5px}.dot{inline-size:7px;block-size:7px;border-radius:50%;flex-shrink:0}.dot.g{background:var(--ok)}.dot.a{background:var(--warn)}.dot.r{background:var(--bad);box-shadow:0 0 8px color-mix(in srgb,var(--bad) 60%,transparent)}.dot.u{background:var(--faint)}.c-top b{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qk{display:flex;gap:4px;align-items:center;flex-shrink:0;-webkit-padding-end:6px;padding-inline-end:6px}.c-fact{font-size:12.5px;color:var(--dim)}.c-fact b{color:var(--warn);font-weight:600}.c-fact .okw{color:var(--ok);font-weight:500}.c-path{font:400 12px var(--f-mono);color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-margin-before:4px;margin-block-start:4px;direction:ltr;text-align:start}.c-foot{display:flex;gap:4px;-webkit-margin-before:7px;margin-block-start:7px;flex-wrap:wrap;align-items:center}.c-detail{-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-margin-before:8px;margin-block-start:8px;-webkit-padding-before:8px;padding-block-start:8px;display:grid;grid-gap:5px;gap:5px;font-size:12px;color:var(--dim)}.c-detail .mono{font-size:12px;color:var(--faint);overflow-wrap:anywhere}.c-detail a{color:var(--info)}.site{grid-column:span 2;display:grid;grid-template-columns:1fr 130px;grid-gap:10px;gap:10px;align-items:center}.site>div:first-child{min-inline-size:0}.spark{block-size:34px;position:relative}.spark svg{inline-size:100%;block-size:100%}.spark .cap{position:absolute;inset-inline-end:0;inset-block-end:-14px;white-space:nowrap}.spark .cap,.spark-wait{font:400 12px var(--f-mono);color:var(--faint)}.spark-wait{display:flex;align-items:center;block-size:100%}.irows{display:flex;flex-direction:column;gap:6px}.irow{background:var(--panel);border:1px solid var(--line);border-radius:10px;position:relative;overflow:hidden}.irow.bad:before,.irow.warn:before{content:"";position:absolute;inset-block-start:0;inset-block-end:0;inset-inline-start:0;inline-size:3px;block-size:auto;border-radius:10px 0 0 10px;background:var(--warn)}.irow.bad:before{background:var(--bad)}.irow-line,.irow-main{display:flex;align-items:center}.irow-main{gap:10px;flex:1 1;min-inline-size:0;min-block-size:38px;padding:0 4px 0 12px;background:none;border:none;color:var(--text);font-size:13px;cursor:pointer;text-align:start}.irow-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-inline-size:26ch}.irow-parent{color:var(--faint);font-weight:400}.irow-truth{color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px}.irow-truth.warn{color:var(--warn);font-weight:600}.irow-truth.bad{color:var(--bad);font-weight:600}.irow-path{-webkit-margin-start:auto;margin-inline-start:auto;font:400 12px var(--f-mono);color:var(--faint);white-space:nowrap;direction:ltr}@media (max-width:1280px){.irow-path{display:none}}.irow .qk{display:flex;gap:4px;-webkit-padding-end:8px;padding-inline-end:8px;flex-shrink:0;align-items:center}.irow-detail{display:grid;grid-gap:5px;gap:5px;padding:10px 12px 12px;-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);font-size:12px;color:var(--dim)}.irow-detail .mono{font-size:12px;color:var(--faint);overflow-wrap:anywhere}.chg,.irow-detail a{color:var(--info)}.chg{display:inline-flex;align-items:center;background:color-mix(in srgb,var(--info) 14%,transparent);border-radius:99px;padding:1px 8px;font:600 12px var(--f-mono);white-space:nowrap}.disc{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:12px 14px}.disc .k{font:500 12px var(--f-mono);letter-spacing:.12em;color:var(--faint);text-transform:uppercase;-webkit-margin-after:5px;margin-block-end:5px}.disc b{font-size:13px;font-weight:600;display:block;-webkit-margin-after:3px;margin-block-end:3px;line-height:1.35}.disc p{font-size:12px;color:var(--dim)}.disc .ev{font:500 12px var(--f-ui);color:var(--info);-webkit-margin-before:7px;margin-block-start:7px;display:inline-block;cursor:pointer;background:none;border:none;padding:0}.disc .ev:hover{text-decoration:underline}.disc .evd{-webkit-margin-before:7px;margin-block-start:7px;display:grid;grid-gap:3px;gap:3px;font:400 12px var(--f-mono);color:var(--faint)}.disc .evd .k{font:500 12px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;-webkit-margin-before:4px;margin-block-start:4px}.disc .evd .step{font:400 12px var(--f-ui);color:var(--dim)}.disc .devline{-webkit-margin-before:5px;margin-block-start:5px;font:400 12px var(--f-mono);color:var(--faint)}.disc-foot{gap:4px;-webkit-margin-before:7px;margin-block-start:7px;flex-wrap:wrap}.disc-foot,.streamline{display:flex;align-items:center}.streamline{gap:9px;font:400 12px var(--f-mono);color:var(--faint);padding:8px 2px}.streamline i{inline-size:6px;block-size:6px;border-radius:50%;background:var(--info);font-style:normal;flex-shrink:0}@media (prefers-reduced-motion:no-preference){.streamline i{animation:blink 1.6s infinite}}.kbd{font:500 12px var(--f-mono);color:var(--faint);border:1px solid var(--line2);border-radius:5px;padding:1px 6px;background:var(--inset)}button.kbd{cursor:pointer}button.kbd:hover{color:var(--text);border-color:var(--accent)}.keysheet{max-inline-size:420px;gap:10px}.keysheet h2{font-family:var(--f-display);font-weight:700;font-size:16px}.keysheet .keysub{font-size:12px;color:var(--dim);-webkit-margin-before:3px;margin-block-start:3px}.keygroup{display:grid;grid-gap:4px;gap:4px}.keygroup .k{font:500 12px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);-webkit-margin-after:2px;margin-block-end:2px}.keyrow{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--dim)}.keyrow .keys{display:inline-flex;align-items:center;gap:3px;min-inline-size:74px}.disc-more{display:flex;align-items:center;gap:10px;-webkit-margin-before:10px;margin-block-start:10px;flex-wrap:wrap}.disc-more a{font:600 12.5px var(--f-ui);color:var(--info);text-decoration:none}.disc-more a:hover{text-decoration:underline}.disc-more .m{font:400 12px var(--f-mono);color:var(--faint)}.ogcard{border:1px solid var(--line2);border-radius:10px;overflow:hidden;max-inline-size:280px;background:var(--inset);-webkit-margin-before:8px;margin-block-start:8px}.ogcard img{display:block;inline-size:100%;max-block-size:140px;object-fit:cover}.ogcard-body{padding:8px 10px}.ogcard-title{font-size:12px;font-weight:600}.ogcard-desc{font-size:12px;color:var(--dim);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.ogcard-host{font:400 12px var(--f-mono);color:var(--faint);-webkit-margin-before:3px;margin-block-start:3px}.ogcard.bare{padding:10px 12px;color:var(--dim);font-size:12px}.disc-groups{display:flex;flex-direction:column;gap:22px}.disc-group>h2{font-size:14px;font-weight:600;display:flex;align-items:baseline;gap:10px;-webkit-margin-after:10px;margin-block-end:10px}.disc-group>h2 .m{font:400 12px var(--f-mono);color:var(--faint);font-weight:400}.disc-muted-panel{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:12px 14px}.disc-muted-panel .k{font:500 12px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);-webkit-margin-after:6px;margin-block-end:6px}.disc-muted-panel p{font-size:12.5px;color:var(--dim)}.disc-muted-panel a{color:var(--info)}.ign2{max-inline-size:640px;-webkit-margin-before:8px;margin-block-start:8px;border:1px dashed var(--line2);border-radius:9px;padding:4px 12px}.ign2-row{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--faint);padding-block:4px}.ign2-row+.ign2-row{-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line)}.ign2-row .n{font:600 12px var(--f-mono);color:var(--dim)}.ign2-row .item{font-size:12.5px;color:var(--dim)}.ign2-row .item .mono{font-size:12px;color:var(--faint)}.ign2-row .why{font:400 12px var(--f-mono)}.ign2-row>button:last-child{-webkit-margin-start:auto;margin-inline-start:auto}.tl{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px 12px;-webkit-margin-after:6px;margin-block-end:6px;flex-wrap:wrap}.chip{font:600 12px var(--f-mono);padding:3px 9px;border-radius:99px;white-space:nowrap}.chip.calm{background:color-mix(in srgb,var(--ok) 12%,transparent);color:var(--ok)}.chip.warn{background:color-mix(in srgb,var(--warn) 14%,transparent);color:var(--warn)}.chip.bad{background:color-mix(in srgb,var(--bad) 14%,transparent);color:var(--bad)}.chip.info{background:color-mix(in srgb,var(--info) 14%,transparent);color:var(--info)}.chip.plain{background:color-mix(in srgb,var(--faint) 16%,transparent);color:var(--dim)}.tl b{font-size:13px}.tl .what{color:var(--dim);font-size:12.5px}.tl .judg{color:var(--faint);font-size:12px;font-style:italic;min-inline-size:0}.tl .when{-webkit-margin-start:auto;margin-inline-start:auto;font:400 12px var(--f-mono);color:var(--faint);white-space:nowrap}.addrow{display:flex;gap:8px;align-items:center;-webkit-margin-before:10px;margin-block-start:10px;flex-wrap:wrap}.in{background:var(--inset);border:1px solid var(--line2);border-radius:8px;color:var(--text);font:400 12.5px var(--f-ui);padding:7px 11px}.in::placeholder{color:var(--faint)}select.in{cursor:pointer}.gsel{font-size:12px;padding:3px 8px;max-inline-size:14ch}.svc-bound{color:var(--faint)}.svc-add{display:flex;flex-wrap:wrap;align-items:center;gap:6px;-webkit-margin-before:6px;margin-block-start:6px}input[type=date].in{font-family:var(--f-ui)}.costbox{display:flex;align-items:center;gap:6px;cursor:pointer;color:var(--dim);font:400 12.5px var(--f-ui)}.costbox input{accent-color:var(--accent);inline-size:14px;block-size:14px;cursor:pointer}.tl.handled{opacity:.62}.rule-row.gone,.tl.gone{border-style:dashed;color:var(--faint)}.rule-row.gone b,.tl.gone b{font-weight:400;color:var(--dim);font-size:12.5px}.rule-row.gone .chip.plain,.tl.gone .chip.plain{opacity:.7}.rule-row.gone .b2,.tl.gone .b2{-webkit-margin-start:auto;margin-inline-start:auto}.rule-row.gone{gap:10px}.kit-card,.set{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 14px;-webkit-margin-after:6px;margin-block-end:6px}.set{display:flex;align-items:center;gap:14px;max-inline-size:560px}.rule-list{-webkit-margin-before:8px;margin-block-start:8px;display:grid;grid-gap:4px;gap:4px}.rule-group{-webkit-margin-before:10px;margin-block-start:10px;display:grid;grid-gap:2px;gap:2px}.rule-cat,.set .lbl .rule-cat{font:600 12px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);-webkit-margin-after:2px;margin-block-end:2px}.rule-row{display:flex;align-items:center;gap:10px;-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line);padding-block:3px}.rule-row:last-child{-webkit-border-after:none;border-block-end:none}.rule-name{font-size:12.5px;color:var(--text);flex:1 1;min-inline-size:0}.set.detectors{grid-column:1/-1;max-inline-size:none}.rule-group .rule-rows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:0 22px;gap:0 22px}@media (max-width:1100px){.rule-group .rule-rows{grid-template-columns:repeat(2,minmax(0,1fr))}}.set.detectors .rule-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.set.detectors .rule-row{padding-block:5px;gap:8px}.set.detectors .rule-row .swt{flex-shrink:0}.fact .l.excl{font-size:11.5px;color:var(--faint);-webkit-margin-before:2px;margin-block-start:2px}.rule-why{display:block;font-size:12px;color:var(--dim);line-height:1.4}.conn-act{align-items:baseline;gap:12px}.conn-act-when{font:12px var(--f-mono);color:var(--faint);min-inline-size:74px;flex-shrink:0}.conn-act-what{font-size:13px;color:var(--dim);flex:1 1;min-inline-size:0}.swt{display:inline-flex;align-items:center;gap:7px;background:none;border:none;cursor:pointer;padding:2px 0;color:var(--faint);font:500 12px var(--f-mono);letter-spacing:.04em}.swt i{inline-size:26px;block-size:14px;border-radius:7px;background:var(--line2);position:relative;transition:background .15s;flex-shrink:0}.swt i:after{content:"";position:absolute;inset-block-start:2px;inset-inline-start:2px;inline-size:10px;block-size:10px;border-radius:50%;background:var(--panel);transition:inset-inline-start .15s}.swt.on i{background:var(--accent)}.swt.on i:after{inset-inline-start:14px}.swt.on{color:var(--dim)}.swt span{min-inline-size:50px;text-align:start}.swt:disabled{opacity:.55;cursor:default}.set select.in{inline-size:150px}.set .lbl b{font-size:13.5px;font-weight:600;display:block}.set .lbl span{font-size:12px;color:var(--dim);display:block}.kit-card>.lbl{display:flex;flex-direction:column;min-inline-size:0}:where(.kit-card>.lbl)>span{font-size:12px;color:var(--dim)}:where(.kit-card>.lbl)>b{font-size:13.5px;font-weight:600;color:var(--text)}.set .ctl{-webkit-margin-start:auto;margin-inline-start:auto;flex-shrink:0;display:flex;gap:8px;align-items:center}.btn{display:inline-block;text-decoration:none;text-align:center;font:600 12px var(--f-ui);padding:5px 11px;border-radius:7px;cursor:pointer;border:1px solid var(--line2);background:var(--raise);color:var(--text)}.btn:hover{background:color-mix(in srgb,var(--raise) 80%,var(--text) 8%)}.btn:disabled{opacity:.6;cursor:default}.btn.primary{background:var(--accent);border-color:transparent;color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.08)}.btn.small{padding:4px 10px;font-size:12px}.btn.danger{color:var(--bad);background:none;border-color:transparent}.btn.danger:hover{border-color:var(--bad)}.btn.ghost{background:none;border-color:transparent;color:var(--faint)}.btn.ghost:hover{color:var(--text)}.link{background:none;border:none;padding:0;font:inherit;font-weight:600;color:var(--accent);text-decoration:underline;cursor:pointer}.banner{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;-webkit-margin-after:14px;margin-block-end:14px;font-size:12.5px;color:var(--dim)}.banner strong{color:var(--text)}.error-line{color:var(--bad)}.error-line,.ok-line{font-size:12.5px;-webkit-margin-before:6px;margin-block-start:6px}.ok-line{color:var(--ok)}.loading{color:var(--dim);font-size:12.5px}.setup-hint{font-size:12px;color:var(--dim);-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-padding-before:8px;padding-block-start:8px}.setup-hint .link{color:var(--info);font-weight:500}.field{flex:1 1 200px;display:flex;flex-direction:column;gap:4px}.field label{font-size:12px;font-weight:600;color:var(--faint);letter-spacing:.02em}input[type=date],input[type=email],input[type=number],input[type=password],input[type=text],input[type=url]{background:var(--inset);color:var(--text);border:1px solid var(--line2);border-radius:8px;padding:7px 11px;font:400 12.5px var(--f-ui);inline-size:100%}input::placeholder{color:var(--faint)}input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}.empty{background:var(--panel);border:1px dashed var(--line2);border-radius:11px;padding:26px 22px;text-align:center}.empty .invite{font-family:var(--f-display);font-weight:600;font-size:18px;-webkit-margin-after:6px;margin-block-end:6px}.empty p{color:var(--dim);font-size:12.5px;-webkit-margin-after:12px;margin-block-end:12px}.logbar{-webkit-margin-after:16px;margin-block-end:16px;display:grid;grid-gap:8px;gap:8px}.logchips{display:flex;flex-wrap:wrap;gap:6px}.logchip{display:inline-flex;align-items:center;gap:6px;font:500 12.5px var(--f-ui);background:var(--inset);color:var(--dim);border:none;border-radius:99px;padding:5px 12px;cursor:pointer}.logchip.on,.logchip:hover{color:var(--text)}.logchip.on{background:color-mix(in srgb,var(--accent) 16%,transparent)}.logchip .cnt{font:600 11.5px var(--f-ui);color:var(--faint);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.logchip.on .cnt{color:var(--accent)}.logremainder{font-size:12px;color:var(--dim);line-height:1.5;max-inline-size:78ch}.logday{-webkit-margin-after:18px;margin-block-end:18px}.logday-h{display:flex;align-items:baseline;gap:8px;font:600 12px var(--f-ui);letter-spacing:.02em;color:var(--faint);-webkit-margin-after:7px;margin-block-end:7px;-webkit-padding-after:6px;padding-block-end:6px;-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line)}.logday-h .cnt{font:600 11.5px var(--f-ui);color:var(--faint);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.loglist{display:grid;grid-gap:2px;gap:2px}.logrow{display:flex;align-items:baseline;gap:10px;padding:4px 8px;border-radius:6px}.logrow:hover{background:color-mix(in srgb,var(--dim) 6%,transparent)}.logtime{font:400 11.5px var(--f-mono);color:var(--faint);flex:0 0 auto;min-inline-size:62px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.logkind{font:600 9.5px var(--f-mono);letter-spacing:.1em;text-transform:uppercase;flex:0 0 auto;min-inline-size:74px}.logkind.k-closed{color:var(--ok)}.logkind.k-mcp{color:var(--info)}.logkind.k-connection{color:var(--accent)}.logtext{font-size:12.5px;line-height:1.55;color:var(--text);min-inline-size:0;overflow-wrap:break-word;word-break:normal;-webkit-hyphens:none;hyphens:none}.logfloor{-webkit-margin-before:18px;margin-block-start:18px;-webkit-padding-before:12px;padding-block-start:12px;-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);font:400 12px var(--f-mono);color:var(--faint)}[data-lang=ar] .logkind{font:600 12px var(--f-ui);letter-spacing:0;text-transform:none}.empty.welcome{padding:34px 26px 26px}.empty.welcome .wl{max-inline-size:60ch;margin-inline:auto;font-size:13.5px;line-height:1.6;color:var(--dim);-webkit-margin-after:20px;margin-block-end:20px}.empty.welcome .setup-actions{gap:10px;-webkit-margin-after:6px;margin-block-end:6px}.empty.welcome .btn{padding:8px 16px;font-size:13px}.empty.welcome .browser,.empty.welcome .setup,.empty.welcome .setup-results{-webkit-margin-before:16px;margin-block-start:16px;text-align:start}.empty.welcome .addrow{justify-content:center}.empty.welcome .someday{margin-block:22px 0;-webkit-padding-before:16px;padding-block-start:16px;-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);font-size:12px;color:var(--faint)}.meta{color:var(--dim);font-size:12.5px}.meta strong{color:var(--text);font-weight:600}[role=tabpanel]>p.meta{-webkit-margin-after:10px;margin-block-end:10px}.path{font:400 12px var(--f-mono);overflow-wrap:anywhere;direction:ltr;text-align:start}.judgment,.path{color:var(--faint)}.judgment{display:block;font-size:12px}.rowlist{display:flex;flex-direction:column;gap:6px}.row{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 13px;font-size:12.5px;flex-wrap:wrap}.row .grow{flex:1 1 200px;min-inline-size:0}.row .dim{color:var(--faint);font-size:12px}.row .date{font:400 12px var(--f-mono);color:var(--faint)}.sweep-wrap{display:flex;align-items:center;gap:12px;padding:14px 4px;color:var(--dim);font-size:12.5px}.sweep{inline-size:30px;block-size:30px;border-radius:50%;flex-shrink:0;border:1px solid var(--line2);position:relative;overflow:hidden}.sweep:after{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,var(--accent) 0deg,transparent 70deg,transparent 1turn);opacity:.8}@media (prefers-reduced-motion:no-preference){.sweep:after{animation:spin 1.6s linear infinite}}@media (prefers-reduced-motion:reduce){.sweep:after{opacity:.25}}@keyframes spin{to{transform:rotate(1turn)}}.ell{display:inline-flex;align-items:baseline;gap:.14em;inline-size:1.15em;vertical-align:baseline}.ell i{inline-size:.2em;block-size:.2em;border-radius:50%;background:currentColor;opacity:.85;font-style:normal}@media (prefers-reduced-motion:no-preference){.ell i{animation:elldot 1.4s ease-in-out infinite}.ell i:nth-child(2){animation-delay:.18s}.ell i:nth-child(3){animation-delay:.36s}}@keyframes elldot{0%,70%,to{opacity:.28}30%{opacity:1}}.setup{display:flex;flex-direction:column;gap:12px}.setup-actions{display:flex;gap:8px;flex-wrap:wrap}.browser .setup-actions,.card .setup-actions,.empty .setup-actions,.setup-actions{justify-content:center}.setup-results{display:flex;flex-direction:column;gap:10px;text-align:start}.setup-results .setup-actions,.setup-results~.setup-actions{justify-content:flex-start}.browser{flex-direction:column;text-align:start}.browser,.crumbbar{display:flex;gap:10px}.crumbbar{align-items:center;flex-wrap:wrap}.dirgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:8px;gap:8px;max-block-size:280px;overflow-y:auto;padding:2px}.folder-btn{display:flex;align-items:center;gap:8px;text-align:start;background:var(--inset);border:1px solid var(--line2);color:var(--text);border-radius:8px;padding:7px 11px;font-size:12.5px;cursor:pointer;overflow-wrap:anywhere}.folder-btn:hover{border-color:var(--accent)}.wherelooked{-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-padding-before:8px;padding-block-start:8px}.wherelooked ul{display:flex;flex-direction:column;gap:3px;-webkit-margin-before:4px;margin-block-start:4px}.wherelooked li{list-style:none;font-size:12px}.confirm-overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--void) 60%,transparent);display:flex;align-items:center;justify-content:center;z-index:110;padding:20px}.confirm{background:var(--panel);border:1px solid var(--line2);border-radius:11px;padding:20px;max-inline-size:460px;inline-size:100%;display:flex;flex-direction:column;gap:14px;font-size:13px;box-shadow:0 12px 40px color-mix(in srgb,var(--void) 35%,transparent)}.confirm .setup-actions{justify-content:flex-end}.er{max-inline-size:1100px}.er-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;-webkit-margin-after:6px;margin-block-end:6px;flex-wrap:wrap}.er-head h1{font-family:var(--f-display);font-weight:700;font-size:20px}.er-head .when{font:400 12px var(--f-mono);color:var(--faint)}.er-sub{font-size:12.5px;color:var(--dim)}.er-sub,.verdict{-webkit-margin-after:22px;margin-block-end:22px}.verdict{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px}@media (max-width:900px){.verdict{grid-template-columns:1fr}}.vcard{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;position:relative;overflow:hidden}.vcard:before{content:"";position:absolute;inset-block-start:0;inset-inline-start:16px;inline-size:40px;block-size:3px;border-radius:0 0 3px 3px;background:var(--line2)}.vcard.ok:before{background:var(--ok)}.vcard.warn:before{background:var(--warn)}.vcard.info:before{background:var(--info)}.vcard .big{font-family:var(--f-display);font-weight:700;font-size:24px;line-height:1;color:var(--text)}.vcard.ok .big{color:var(--ok)}.vcard.warn .big{color:var(--warn)}.vcard .lbl{font-size:12px;color:var(--dim);-webkit-margin-before:6px;margin-block-start:6px}.er-block{-webkit-margin-after:20px;margin-block-end:20px}.er-block h4{font:600 12px var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);-webkit-margin-after:10px;margin-block-end:10px}.er-row{display:flex;align-items:center;gap:10px;padding-block:8px;-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line);font-size:13px}.er-row:last-child{-webkit-border-after:none;border-block-end:none}.er-row.wrap{flex-wrap:wrap}.er-row .k{color:var(--dim)}.er-row .v{-webkit-margin-start:auto;margin-inline-start:auto;font-weight:600;text-align:end}.er-row .v.mono{font-family:var(--f-mono);font-weight:500}.er-row .v.soft{font-weight:500;color:var(--dim)}.er-why{flex-basis:100%}.er-subline,.er-why{font-size:12px;color:var(--dim)}.er-subline{margin-block:-4px 8px}.wk{border:1px solid var(--line);border-radius:11px;overflow:hidden}.wkrow{display:flex;align-items:baseline;gap:12px;padding:9px 14px;background:var(--panel);flex-wrap:wrap}.wkrow+.wkrow{-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line)}.wkrow .cat{font:500 12px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--info);inline-size:104px;flex-shrink:0}.wkrow .fact{font-size:13px;flex:1 1 260px;min-inline-size:0;color:var(--text);background:none;border:none;border-radius:0;padding:0}.wkrow .fact .why{color:var(--dim);font-size:12px}.wkrow .wk-details{-webkit-margin-start:auto;margin-inline-start:auto;flex-shrink:0}.wkrow .wkdepth{flex-basis:100%;font-size:12px;color:var(--dim);line-height:1.55;-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-margin-before:8px;margin-block-start:8px;-webkit-padding-before:8px;padding-block-start:8px}.langbar,.wkrow.open{background:var(--inset)}.langbar{display:flex;block-size:8px;border-radius:4px;overflow:hidden;margin-block:4px 8px}.langbar span{display:block}.langkey{display:flex;gap:14px;flex-wrap:wrap;-webkit-margin-after:10px;margin-block-end:10px;font-size:12px;color:var(--faint)}.langkey span{display:inline-flex;align-items:center;gap:6px}.langkey i{inline-size:8px;block-size:8px;border-radius:2px}.facts{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}@media (max-width:900px){.facts{grid-template-columns:repeat(2,1fr)}}.fact{background:var(--inset);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.fact .n{font-family:var(--f-display);font-weight:700;font-size:18px}.fact .l{font-size:12px;color:var(--faint);-webkit-margin-before:3px;margin-block-start:3px}.diag{background:var(--panel);border:1px solid var(--line2);border-radius:12px;padding:0;max-inline-size:680px;inline-size:100%;display:flex;flex-direction:column;max-block-size:86vh;box-shadow:0 12px 40px color-mix(in srgb,var(--void) 35%,transparent)}.diag-head{padding:18px 20px 12px;-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line)}.diag-head h2{font-family:var(--f-display);font-weight:700;font-size:18px}.diag-head p{font-size:12.5px;color:var(--dim);-webkit-margin-before:4px;margin-block-start:4px}.diag-safe{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ok);-webkit-margin-before:8px;margin-block-start:8px}.diag-safe i{inline-size:7px;block-size:7px;border-radius:50%;background:var(--ok);font-style:normal;flex-shrink:0}.diag-preview{overflow:auto;padding:16px 20px;background:var(--inset);-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line);flex:1 1}.diag-preview pre{font:400 12px var(--f-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.diag-hint,.diag-preview pre{color:var(--dim);line-height:1.6}.diag-hint{padding:12px 20px 0;font-size:12px}.diag-hint b{color:var(--dim);font-weight:600}.diag-acts{padding:12px 20px 14px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.diag-acts .grow{-webkit-margin-start:auto;margin-inline-start:auto}.toast{position:fixed;inset-block-end:22px;inset-inline:0;margin-inline:auto;inline-size:-moz-fit-content;inline-size:fit-content;max-inline-size:min(92vw,520px);background:var(--raise);border:1px solid var(--line2);border-radius:10px;padding:10px 16px;font-size:12.5px;color:var(--text);z-index:120;box-shadow:0 8px 30px color-mix(in srgb,var(--void) 40%,transparent);text-align:center}@media (prefers-reduced-motion:no-preference){.toast{animation:toastin .2s ease-out both}}@keyframes toastin{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.landing{min-block-size:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;gap:10px;max-inline-size:none}.landing .brand{font-size:44px;-webkit-margin-after:0;margin-block-end:0}.landing .mark{inline-size:52px;block-size:52px}.landing-tag{font-size:15px}.landing-sub{font-size:12.5px;color:var(--dim);-webkit-margin-after:16px;margin-block-end:16px}.landing .scan{font-size:14px;padding:10px 22px;border-radius:10px;text-decoration:none}.landing-foot{position:fixed;inset-block-end:18px;color:var(--faint);font-size:12px}.landing.doc{justify-content:flex-start;padding-block:48px}.landing.doc .landing-foot{position:static;inset-block-end:auto;-webkit-margin-before:28px;margin-block-start:28px}.legal-doc{font:400 13px/1.7 var(--f-ui);color:var(--dim);text-align:start}.legal-doc h2{font-size:14px;font-weight:700;color:var(--text);margin-block:22px 8px}.legal-doc p{margin-block:0 12px}.legal-doc strong{font-weight:700;color:var(--text)}.legal-doc code{font:400 12px/1.5 var(--f-mono);color:var(--text);background:var(--inset);border:1px solid var(--line);border-radius:4px;padding:1px 5px}.legal-doc ul{margin-block:0 12px;-webkit-padding-start:20px;padding-inline-start:20px}.legal-doc li{-webkit-margin-after:8px;margin-block-end:8px}.legal-doc .legal-clause{-webkit-padding-start:26px;padding-inline-start:26px;text-indent:-26px}.legal-doc .legal-marker{display:inline-block;inline-size:20px;color:var(--text);font-weight:700;text-indent:0}@media (prefers-reduced-motion:no-preference){.disc,.need,.tl{animation:rise .25s ease-out backwards}@keyframes rise{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}}[data-lang=ar] .shell{grid-template-columns:240px minmax(0,1fr) 208px}[data-lang=ar] .side{grid-column:3;grid-row:1}[data-lang=ar] main{grid-column:2;grid-row:1}[data-lang=ar] .rail{grid-column:1;grid-row:1}@media (max-width:1100px){[data-lang=ar] .shell{grid-template-columns:minmax(0,1fr) 208px}[data-lang=ar] .side{grid-column:2}[data-lang=ar] main{grid-column:1}}[data-lang=ar] .rail,[data-lang=ar] .side,[data-lang=ar] main{direction:rtl;text-align:right}[data-lang=ar] .nav a.on{box-shadow:inset -2px 0 0 var(--accent)}[data-lang=ar] .pl:before{content:"\2039"}[data-lang=ar] .data,[data-lang=ar] .path,[data-lang=ar] .word{text-align:left}.data,.en,[data-lang=ar] .data,[data-lang=ar] .path,[data-lang=ar] .word{direction:ltr;unicode-bidi:-webkit-isolate;unicode-bidi:isolate}.data.mono{font-family:var(--f-mono)}.data.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.raillist{display:grid;grid-gap:7px;gap:7px;align-content:start;flex:1 1 auto;min-block-size:0;overflow-y:auto;overscroll-behavior:contain}.raillist::-webkit-scrollbar{inline-size:6px}.raillist::-webkit-scrollbar-thumb{background:var(--line2);border-radius:3px}[data-lang=ar] .need .tag{font:600 12px var(--f-ui);letter-spacing:0;text-transform:none;padding:2px 8px}.conn-row{flex-wrap:wrap;gap:8px 12px;padding-block:6px}.conn-name{display:flex;align-items:baseline;gap:8px;font-weight:600;font-size:13px}.conn-name em{font-style:normal;font-weight:400;font-size:11.5px}.conn-on{color:var(--ok)}.conn-off{color:var(--dim)}.conn-fault{color:var(--warn)}.conn-idle{background:color-mix(in srgb,var(--faint) 16%,transparent);color:var(--dim);border-radius:99px;padding:1px 7px}.conn-path{font:400 11.5px var(--f-mono);color:var(--faint);overflow-wrap:anywhere;min-inline-size:0;flex:1 1}.conn-row .b2{-webkit-margin-start:auto;margin-inline-start:auto;flex-shrink:0}[role=tabpanel][hidden]{display:none}.conn-also{color:var(--dim);font-size:12px;-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);-webkit-margin-before:4px;margin-block-start:4px;-webkit-padding-before:8px;padding-block-start:8px}.conn-diff{-webkit-margin-before:10px;margin-block-start:10px;padding:10px 12px;background:var(--inset);border:1px solid var(--line2);border-radius:8px;display:flex;flex-direction:column;gap:4px}.conn-row>.conn-diff{flex-basis:100%;-webkit-margin-before:6px;margin-block-start:6px}.conn-diff>b{font-size:12.5px}.conn-diff.conn-refused{border-color:var(--bad)}.conn-backup,.conn-count{color:var(--dim);font-size:11.5px}.conn-alt{display:block;flex-basis:100%;-webkit-margin-before:8px;margin-block-start:8px}.conn-alt-link{display:inline-block;font-size:12px;color:var(--dim);text-decoration:underline}.conn-alt-link:focus-visible,.conn-alt-link:hover{color:var(--fg)}.conn-alt-help{display:block;color:var(--dim);font-size:11.5px;-webkit-margin-before:2px;margin-block-start:2px}.conn-reveal{background:none;border:0;padding:0;font:inherit;color:var(--dim);text-decoration:underline;cursor:pointer}.conn-reveal:focus-visible,.conn-reveal:hover{color:var(--fg)}.conn-acct+.conn-acct,.conn-granted{-webkit-margin-before:6px;margin-block-start:6px}.conn-acct-name{display:block;color:var(--dim);font-size:11.5px;font-weight:600}.conn-granted ul{margin:0;-webkit-padding-start:18px;padding-inline-start:18px}.conn-granted li{color:var(--dim);font-size:11.5px;line-height:1.7}.conn-done{color:var(--ok);font-size:12.5px;-webkit-margin-before:8px;margin-block-start:8px}.conn-lines{margin:6px 0 2px;padding:8px 10px;background:var(--void);border:1px solid var(--line);border-radius:6px;font:400 11.5px/1.55 var(--f-mono);overflow-x:auto;white-space:pre;-moz-tab-size:2;tab-size:2;max-block-size:340px;overflow-y:auto}.conn-lines span{display:block}.dl-add{color:var(--ok)}.dl-del{color:var(--bad)}.dl-ctx{color:var(--faint)}.gh-chips{display:flex;flex-wrap:wrap;gap:6px;-webkit-margin-before:6px;margin-block-start:6px;align-items:baseline}.irow-line .gh-chips{-webkit-margin-before:0;margin-block-start:0;flex-shrink:0;-webkit-margin-start:8px;margin-inline-start:8px}.gh-prov{color:var(--dim);font-size:11.5px;flex-basis:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.irow-line .gh-prov{display:none}.conn-setup{gap:2px}.conn-lede{-webkit-margin-after:6px;margin-block-end:6px}.conn-lede,.conn-touches{color:var(--dim);font-size:13px}.conn-touches{-webkit-margin-before:8px;margin-block-start:8px}.conn-go{display:flex;gap:8px;align-items:center;-webkit-margin-before:12px;margin-block-start:12px;flex-wrap:wrap}.conn-go a.b{text-decoration:none;display:inline-block}.conn-waiting{font-size:12.5px;color:var(--warn);-webkit-margin-before:8px;margin-block-start:8px}.conn-device{-webkit-margin-before:12px;margin-block-start:12px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--inset);display:flex;flex-direction:column;gap:8px}.conn-device-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.conn-device-label{font-size:11.5px;color:var(--faint);letter-spacing:.06em;text-transform:uppercase}.conn-device-code{font:700 22px var(--f-mono);color:var(--text);letter-spacing:.14em;-webkit-user-select:all;-moz-user-select:all;user-select:all}.conn-device-clock{font-size:12px;color:var(--faint)}.conn-receipt{-webkit-margin-before:12px;margin-block-start:12px;padding:10px 12px;background:var(--void);border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column;gap:3px;font:12.5px/1.5 var(--f-mono);color:var(--dim)}.conn-receipt>b{color:var(--text);font-size:12px;letter-spacing:.04em}.conn-leak{font-family:var(--f-ui);font-size:12.5px;color:var(--text);-webkit-margin-before:4px;margin-block-start:4px}.conn-ok{border-color:color-mix(in srgb,var(--ok) 45%,var(--line2))}.conn-bad{color:var(--bad)}.conn-dropped{flex-basis:100%;color:var(--warn);font-size:12px;-webkit-margin-before:2px;margin-block-start:2px}.conn-step{display:block;-webkit-margin-before:4px;margin-block-start:4px;color:var(--text);font-size:12.5px}.conn-warn{color:var(--warn);font-size:11.5px}.tabs{display:flex;gap:2px;-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line);margin-block:4px 14px}.tabs button{font:600 13px var(--f-ui);padding:8px 14px;cursor:pointer;background:none;border:none;-webkit-border-after:2px solid transparent;border-block-end:2px solid transparent;color:var(--dim);display:flex;align-items:center;gap:7px;-webkit-margin-after:-1px;margin-block-end:-1px}.tabs button.on,.tabs button:hover{color:var(--text)}.tabs button.on{border-block-end-color:var(--accent)}.tabs .tabn{font:600 11.5px var(--f-mono);background:var(--raise);color:var(--faint);border-radius:99px;padding:1px 7px;min-inline-size:20px;text-align:center}.tabs button.on .tabn{color:var(--dim)}.conn-row{padding-block:9px;row-gap:4px}.conn-name{font-size:14px}.conn-name em{font-size:12px}.conn-path{flex-basis:100%;flex-grow:0;order:3}.conn-row .b2,.conn-row .ovf{-webkit-margin-start:auto;margin-inline-start:auto;order:2}.needs-row{position:relative;overflow:visible}.needs-row:before{content:"";position:absolute;inset-block-start:0;inset-block-end:0;inset-inline-start:0;inline-size:3px;border-radius:10px 0 0 10px;background:var(--warn)}.settings-shell{display:grid;grid-template-columns:184px minmax(0,1fr);grid-gap:26px;gap:26px;align-items:start}.tabs.tabs-v{flex-direction:column;gap:1px;-webkit-border-after:none;border-block-end:none;-webkit-border-end:1px solid var(--line);border-inline-end:1px solid var(--line);margin-block:0;-webkit-padding-end:0;padding-inline-end:0;position:-webkit-sticky;position:sticky;inset-block-start:20px}.tabs.tabs-v button{text-align:start;justify-content:flex-start;padding:8px 12px;-webkit-border-after:none;border-block-end:none;-webkit-border-start:2px solid transparent;border-inline-start:2px solid transparent;-webkit-margin-after:0;margin-block-end:0;-webkit-margin-end:-1px;margin-inline-end:-1px}.tabs.tabs-v button.on{border-inline-start-color:var(--accent)}.tabs.tabs-v .tabn{-webkit-margin-start:auto;margin-inline-start:auto}.settings-panel{display:block}.settings-panel,.settings-panel>.set{max-inline-size:none}.settings-panel .set{align-items:start}.settings-panel .ctl{-webkit-margin-start:auto;margin-inline-start:auto;align-self:start;flex-shrink:0}.settings-panel .sec{-webkit-margin-before:0;margin-block-start:0}.settings-panel .sec+.meta{-webkit-margin-after:10px;margin-block-end:10px;display:block}
|
/package/dist/.next/static/{71f4c38dc0c65050446da → da1c2e66999c334d135d9}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|