PageSourceSearch

https://wildearth.tv/build/assets/AppDiagnostics-CB6YRl9W.js

js wildearth.tv collected 2026-10-01 11:30:46 UTC 10,011 bytes, 1 lines download raw bytes

1import{d as Q,q as w,l as Y,U as m,O as l,_ as f,u as e,a0 as n,aE as Z,L as s,M as o,F as x,V as _,K as y,$ as u,aC as R,P as H,a8 as P,a2 as B,aN as ee,aB as te}from"./icons-Bgx76RDF.js";import{_ as O}from"./Badge.vue_vue_type_script_setup_true_lang-AIQeuGP0.js";import{_ as A}from"./index-B_Re349R.js";import{_ as le}from"./ConfirmDeleteDialog.vue_vue_type_script_setup_true_lang-BSc3daWv.js";import{_ as T,a as L,b as U,c as k,d as j}from"./index-CTNqJoAD.js";import{_ as W,a as b,b as v,c as q,d as p,e as G}from"./TableHeader.vue_vue_type_script_setup_true_lang-BPM-JmS-.js";import{_ as se}from"./AppLayout.vue_vue_type_script_setup_true_lang-BvhncCaL.js";import{h as ae,r as J}from"./app-1To86AzH.js";import"./utils-CDN07tui.js";import"./reka-ui-CxQDcGDz.js";import"./Input.vue_vue_type_script_setup_true_lang-DhF2TxEr.js";import"./index-DQD3-gx9.js";import"./index-DgDhoHPE.js";import"./index-DzzYwkmi.js";import"./SheetTrigger.vue_vue_type_script_setup_true_lang-ClJRYQsn.js";import"./TooltipTrigger.vue_vue_type_script_setup_true_lang-XzAgB0RT.js";import"./useInitials-C0AQeawK.js";import"./index-DRJF5lkF.js";import"./Label.vue_vue_type_script_setup_true_lang-CQc2ZaV7.js";import"./index-ypZ4j5CC.js";import"./useStaffSidebar-DBxGPlKt.js";const ne={class:"mx-auto flex h-full w-full max-w-7xl flex-1 flex-col gap-4 roun
1ded-xl p-4 text-xs"},ie={class:"flex flex-wrap items-center justify-between gap-2"},re={class:"flex items-center gap-2 text-lg font-semibold"},ue={class:"flex flex-wrap items-center gap-2"},oe={class:"flex flex-wrap gap-2"},de={key:0,class:"text-muted-foreground rounded-md border p-6 text-center"},fe={key:1,class:"rounded-md border"},me={class:"flex flex-col gap-3"},pe={class:"flex items-start justify-between gap-2"},ve={class:"font-semibold break-all"},xe={class:"flex shrink-0 items-center gap-2"},ce={class:"bg-background max-h-72 overflow-auto rounded border p-2 font-mono"},ge={key:0,class:"text-muted-foreground"},Me=Q({layout:se,__name:"AppDiagnostics",props:{groups:{},selected:{},totals:{},versionOptions:{},kinds:{},windows:{},filters:{}},setup(d){const c=d,h=w(c.filters.kind??"all"),V=w(String(c.filters.days)),$=w(c.filters.version??"all"),S=i=>({crash:"Crash",hang:"Hang",cpu_exception:"CPU",disk_write_exception:"Disk writes",app_launch:"Slow launch",error:"Error"})[i]??i,z=i=>i==="crash"?"destructive":i==="hang"?"secondary":"outline",F=i=>i?new Date(i).toLocaleString("en-GB",{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"}):"–",M=Y(()=>Object.values(c.totals).reduce((i,t)=>i+Number(t),0));function C(i=c.filters.signature){J.get(route("admin.app-diagnostics.index"),{kind:h.value==="all"?void 0:h.value,days:V.value,version:$.value==="all"?void 0:$.value,signature:i??void 0},{preserveState:!0,preserveScroll:!0})}const g=w(null),N=w(!1);function E(i,t){g.value={signature:i,label:t}}function X(){if(!g.value)return;const i=g.value.signature;N.value=!0,J.delete(route("admin.app-diagnostics.destroy"),{data:i?{signature:i}:{},preserveScroll:!0,onFinish:()=>{N.value=!1,g.value=null,(i===null||i===c.filters.signature)&&C(null)}})}function D(){C(null)}function I(i){C(c.filters.signature===i.signature?null:i.signature)}return(i,t)=>{var K;return o(),m(x,null,[l(e(ae),{title:"Admin - App Crashes"}),f("div",ne,[f("div",ie,[f("h1",re,[l(e(Z),{class:"h-4 w-4"}),t[8]||(t[8]=n(" App crashes and hangs",-1))]),f("div",ue,[l(e(j),{modelValue:h.value,"onUpdate:modelValue":[t[0]||(t[0]=a=>h.value=a),D]},{default:s(()=>[l(e(T),{class:"h-8 w-[140px] text-xs"},{default:s(()=>[l(e(L))]),_:1}),l(e(U),null,{default:s(()=>[l(e(k),{value:"all"},{default:s(()=>[...t[9]||(t[9]=[n("All kinds",-1)])]),_:1}),(o(!0),m(x,null,_(d.kinds,a=>(o(),y(e(k),{key:a,value:a},{default:s(()=>[n(u(S(a)),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"]),l(e(j),{modelValue:$.value,"onUpdate:modelValue":[t[1]||(t[1]=a=>$.value=a),D]},{default:s(()=>[l(e(T),{class:"h-8 w-[140px] text-xs"},{default:s(()=>[l(e(L))]),_:1}),l(e(U),null,{default:s(()=>[l(e(k),{value:"all"},{default:s(()=>[...t[10]||(t[10]=[n("All versions",-1)])]),_:1}),(o(!0),m(x,null,_(d.versionOptions,a=>(o(),y(e(k),{key:a,value:a},{default:s(()=>[n(u(a),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"]),l(e(A),{size:"sm",variant:"outline",class:"h-8 text-xs",disabled:M.value===0,onClick:t[2]||(t[2]=a=>E(null,"every report"))},{default:s(()=>[l(e(R),{class:"mr-1 h-3.5 w-3.5"}),t[11]||(t[11]=n(" Clear all ",-1))]),_:1},8,["disabled"]),l(e(j),{modelValue:V.value,"onUpdate:modelValue":[t[3]||(t[3]=a=>V.value=a),D]},{default:s(()=>[l(e(T),{class:"h-8 w-[130px] text-xs"},{default:s(()=>[l(e(L))]),_:1}),l(e(U),null,{default:s(()=>[(o(!0),m(x,null,_(d.windows,a=>(o(),y(e(k),{key:a,value:String(a)},{default:s(()=>[n("Last "+u(a===1?"day":`${a} days`),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])])]),t[27]||(t[27]=f("p",{class:"text-muted-foreground"},[n(" MetricKit delivers each device's reports once a day, so a crash shows up here the day after it happened. Offsets are addresses in the build. Download a report and run "),f("code",{class:"bg-muted rounded px-1"},"scripts/symbolicate-metrickit.py"),n(" in the iOS repository on the Mac that made the archive to see function names. The Roku app reports the failures it handled, e.g. a playback error, as soon as they happen, and they are listed as errors. ")],-1)),f("div",oe,[l(e(O),{variant:"outline",class:"text-xs"},{default:s(()=>[n(u(M.value)+" reports",1)]),_:1}),(o(!0),m(x,null,_(d.totals,(a,r)=>(o(),y(e(O),{key:r,variant:z(String(r)),class:"text-xs"},{default:s(()=>[n(u(S(String(r)))+": "+u(a),1)]),_:2},1032,["variant"]))),128))]),d.groups.length===0?(o(),m("div",de,"No reports in this window.")):(o(),m("div",fe,[l(e(G),null,{default:s(()=>[l(e(W),null,{default:s(()=>[l(e(b),null,{default:s(()=>[l(e(v),{class:"w-[80px]"},{default:s(()=>[...t[12]||(t[12]=[n("Kind",-1)])]),_:1}),l(e(v),null,{default:s(()=>[...t[13]||(t[13]=[n("What happened",-1)])]),_:1}),l(e(v),null,{default:s(()=>[...t[14]||(t[14]=[n("Where",-1)])]),_:1}),l(e(v),{class:"text-right"},{default:s(()=>[...t[15]||(t[15]=[n("Reports",-1)])]),_:1}),l(e(v),null,{default:s(()=>[...t[16]||(t[16]=[n("Versions",-1)])]),_:1}),l(e(v),null,{default:s(()=>[...t[17]||(t[17]=[n("Last seen",-1)])]),_:1})]),_:1})]),_:1}),l(e(q),null,{default:s(()=>[(o(!0),m(x,null,_(d.groups,a=>(o(),m(x,{key:a.signature},[l(e(b),{class:P(["cursor-pointer",{"bg-muted/60":d.filters.signature===a.signature}]),onClick:r=>I(a)},{default:s(()=>[l(e(p),null,{default:s(()=>[l(e(O),{variant:z(a.kind),class:"text-[10px]"},{default:s(()=>[n(u(S(a.kind)),1)]),_:2},1032,["variant"])]),_:2},1024),l(e(p),{class:"max-w-[360px] truncate",title:a.summary},{default:s(()=>[n(u(a.summary),1)]),_:2},1032,["title"]),l(e(p),{class:"font-mono"},{default:s(()=>[n(u(a.top_frame??"–"),1)]),_:2},1024),l(e(p),{class:"text-right font-semibold"},{default:s(()=>[n(u(a.reports),1)]),_:2},1024),l(e(p),null,{default:s(()=>[n(u(a.versions.join(", ")),1)]),_:2},1024),l(e(p),null,{default:s(()=>[n(u(F(a.last_seen)),1)]),_:2},1024)]),_:2},1032,["class","onClick"]),d.selected&&d.selected.signature===a.signature?(o(),y(e(b),{key:0},{default:s(()=>[l(e(p),{colspan:"6",class:"bg-muted/30 p-3"},{default:s(()=>[f("div",me,[f("div",pe,[f("p",ve,u(d.selected.summary),1),f("div",xe,[l(e(A),{size:"sm",variant:"outline",class:"h-6 text-xs",onClick:t[4]||(t[4]=B(r=>E(d.selected.signature,`every report of ${d.selected.summary}`),["stop"]))},{default:s(()=>[l(e(R),{class:"mr-1 h-3 w-3"}),t[18]||(t[18]=n(" Clear ",-1))]),_:1}),f("button",{type:"button","aria-label":"Close",onClick:t[5]||(t[5]=B(r=>C(null),["stop"]))},[l(e(ee),{class:"h-4 w-4"})])])]),f("div",null,[t[19]||(t[19]=f("p",{class:"mb-1 font-medium"},"Newest report's stack, innermost first. The app's own frames are highlighted.",-1)),f("ol",ce,[(o(!0),m(x,null,_(d.selected.frames,r=>(o(),m("li",{key:r.index,class:P(r.in_app?"text-foreground font-semibold":"text-muted-foreground")},u(String(r.index).padStart(2," "))+" "+u(r.binary)+" "+u(r.offset?`+${r.offset}`:""),3))),128)),d.selected.frames.length===0?(o(),m("li",ge,"No stack in this report.")):H("",!0)])]),l(e(G),null,{default:s(()=>[l(e(W),null,{default:s(()=>[l(e(b),null,{default:s(()=>[l(e(v),null,{default:s(()=>[...t[20]||(t[20]=[n("Happened",-1)])]),_:1}),l(e(v),null,{default:s(()=>[...t[21]||(t[21]=[n("Version",-1)])]),_:1}),l(e(v),null,{default:s(()=>[...t[22]||(t[22]=[n("OS",-1)])]),_:1}),l(e(v),null,{default:s(()=>[...t[23]||(t[23]=[n("Device",-1)])]),_:1}),l(e(v),null,{default:s(()=>[...t[24]||(t[24]=[n("Detail",-1)])]),_:1}),l(e(v),{class:"w-[110px]"})]),_:1})]),_:1}),l(e(q),null,{default:s(()=>[(o(!0),m(x,null,_(d.selected.reports,r=>(o(),y(e(b),{key:r.id},{default:s(()=>[l(e(p),null,{default:s(()=>[n(u(F(r.occurred_at??r.received_at)),1)]),_:2},1024),l(e(p),null,{default:s(()=>[n(u(r.app_version??"?")+" ("+u(r.app_build??"?")+")",1)]),_:2},1024),l(e(p),null,{default:s(()=>[n(u(r.os_version??"–"),1)]),_:2},1024),l(e(p),null,{default:s(()=>[n(u(r.device_type??"–"),1)]),_:2},1024),l(e(p),{class:"max-w-[280px] truncate",title:r.summary},{default:s(()=>[n(u(r.summary),1)]),_:2},1032,["title"]),l(e(p),null,{default:s(()=>[l(e(A),{as:"a",size:"sm",variant:"outline",class:"h-6 text-xs",href:i.route("admin.app-diagnostics.download",r.id),onClick:t[6]||(t[6]=B(()=>{},["stop"]))},{default:s(()=>[l(e(te),{class:"mr-1 h-3 w-3"}),t[25]||(t[25]=n(" JSON ",-1))]),_:1},8,["href"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})])]),_:1})]),_:1})):H("",!0)],64))),128))]),_:1})]),_:1})])),l(le,{open:g.value!==null,title:"Clear reports","confirm-word":"clear",description:`This deletes ${((K=g.value)==null?void 0:K.label)??""}. A failure that happens again afterwards raises a new alert.`,loading:N.value,"onUpdate:open":t[7]||(t[7]=a=>{a||(g.value=null)}),onConfirm:X},{"confirm-text":s(()=>[...t[26]||(t[26]=[n("Clear",-1)])]),_:1},8,["open","description","loading"])])],64)}}});
1export{Me as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.