@xenon-device-management/xenon 1.22.2 → 1.22.4
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/lib/package.json +1 -1
- package/lib/public/assets/{ApiKeyGate-Snh2iZH5.js → ApiKeyGate-mUVQGEc0.js} +1 -1
- package/lib/public/assets/{BugReportButton-DFLx1uf_.css → BugReportButton-CPBjfiv4.css} +1 -1
- package/lib/public/assets/{BugReportButton-Sk0KGufH.js → BugReportButton-DTEs8tGN.js} +1 -1
- package/lib/public/assets/DeviceMosaicView-BRoAd1Sj.js +7 -0
- package/lib/public/assets/{EmptyState-CQun3BJE.js → EmptyState-ErJtYI1I.js} +1 -1
- package/lib/public/assets/{FieldGroup-DmYZP2j7.js → FieldGroup-65VOAW_s.js} +1 -1
- package/lib/public/assets/{Modal-C5W8lMJ6.js → Modal-CumsTFc7.js} +1 -1
- package/lib/public/assets/{SegmentedControl-BIzlKyUd.js → SegmentedControl-Dq0r4nxn.js} +1 -1
- package/lib/public/assets/{SettingCard-DAFqQw7S.js → SettingCard-BlYmGnxD.js} +1 -1
- package/lib/public/assets/{Table-DRkkM4OR.js → Table-Dw77VPjI.js} +1 -1
- package/lib/public/assets/{activity-B6x69oOy.js → activity-W-IYNYOw.js} +1 -1
- package/lib/public/assets/{ai-settings-CSZQis7F.js → ai-settings-DBYtabv0.js} +1 -1
- package/lib/public/assets/{api-keys-4ddjSngL.js → api-keys-DTCC8uWq.js} +1 -1
- package/lib/public/assets/{apps-CePIfnu9.js → apps-BanJSL1m.js} +1 -1
- package/lib/public/assets/{arrow-left-CaOe18yC.js → arrow-left-DG02ll-2.js} +1 -1
- package/lib/public/assets/{arrow-right-FEQsqDvH.js → arrow-right-DjAmMmYl.js} +1 -1
- package/lib/public/assets/{arrow-up-right-Dnszb73S.js → arrow-up-right-Dk4zYVvC.js} +1 -1
- package/lib/public/assets/{auth-shell-Vq1rYIVD.js → auth-shell-DX60Cnp3.js} +2 -2
- package/lib/public/assets/{builds-page-FfsUegKZ.js → builds-page-DlEfR2IF.js} +1 -1
- package/lib/public/assets/{button-DrqhMLZ0.js → button-CLqhTbpf.js} +1 -1
- package/lib/public/assets/{calendar-BuRuUa7q.js → calendar-DbUhR1ky.js} +1 -1
- package/lib/public/assets/{check-DYccNk73.js → check-DBN5pEHK.js} +1 -1
- package/lib/public/assets/chevron-left-C_NNcuSy.js +6 -0
- package/lib/public/assets/{chevron-right-C6ny35i3.js → chevron-right-DSEJHO6A.js} +1 -1
- package/lib/public/assets/{circle-check-Cokzy9a2.js → circle-check-DCvFQDU8.js} +1 -1
- package/lib/public/assets/{circle-x-BhUzyxKR.js → circle-x-DozngDyk.js} +1 -1
- package/lib/public/assets/{clock-BCG0drfS.js → clock-rmbxO4wJ.js} +1 -1
- package/lib/public/assets/{copy-BKOm9hko.js → copy-BaeAL15w.js} +1 -1
- package/lib/public/assets/device-explorer-C4d2_w5A.css +1 -0
- package/lib/public/assets/device-explorer-D7Jz-zbV.js +245 -0
- package/lib/public/assets/{download-R2k7Nd4P.js → download-CA52fegs.js} +1 -1
- package/lib/public/assets/{forgot-password-CiZcr-gB.js → forgot-password-B9IbsWvo.js} +1 -1
- package/lib/public/assets/{funnel-SD4F5IdR.js → funnel-Ba_b7Wqz.js} +1 -1
- package/lib/public/assets/{index-C7S8Y7Fj.css → index-BYvkQIjW.css} +1 -1
- package/lib/public/assets/{index-BHDlQcd6.js → index-c8lodEdC.js} +2 -2
- package/lib/public/assets/{input-Ilib6feD.js → input-chJvT8xE.js} +1 -1
- package/lib/public/assets/keycodes-D_POkMkt.js +21 -0
- package/lib/public/assets/layers-DmlmDics.js +6 -0
- package/lib/public/assets/{lock-s9ZhGDFF.js → lock-DYppIRUo.js} +1 -1
- package/lib/public/assets/{login-EkaxK7K5.js → login-BU4PznoN.js} +1 -1
- package/lib/public/assets/{maintenance-settings-yYhZaU7n.js → maintenance-settings-BuAlGIXr.js} +1 -1
- package/lib/public/assets/{mouse-pointer-2-C6yy1DTx.js → mouse-pointer-2-Bf4XBYxV.js} +1 -1
- package/lib/public/assets/{network-B8fPwmW9.js → network-vHrQFUoR.js} +1 -1
- package/lib/public/assets/{overview-DrTe5eJi.js → overview-Bg07_C5h.js} +1 -1
- package/lib/public/assets/{page-header-DhD-Kua9.js → page-header-odsXTF6s.js} +1 -1
- package/lib/public/assets/{plus-B75ovH3O.js → plus-BxPFTMza.js} +1 -1
- package/lib/public/assets/{profile-page-C2p5rB3x.js → profile-page-B8xPVAnw.js} +1 -1
- package/lib/public/assets/{reset-password-tCemYrqV.js → reset-password-WDhJisGT.js} +1 -1
- package/lib/public/assets/{runbook-page-Dq3wdSII.js → runbook-page-CCc8c4KT.js} +1 -1
- package/lib/public/assets/{select-Cfv-njLE.js → select-2OHlz_YH.js} +1 -1
- package/lib/public/assets/selector-detail-page-Dmmuh77c.js +1 -0
- package/lib/public/assets/{selector-health-BP45B44s.js → selector-health-BpX8aLag.js} +1 -1
- package/lib/public/assets/{selector-health-page-D-8SdN_l.js → selector-health-page-CSkHlwY0.js} +1 -1
- package/lib/public/assets/{session-detail-page-Dm4tnoTT.js → session-detail-page-C8YHyGHB.js} +3 -8
- package/lib/public/assets/{settings-ChfaAd8F.js → settings-DabtQQ3v.js} +1 -1
- package/lib/public/assets/{status-pill-outline-CLa0C1Sg.js → status-pill-outline-Ch5V_U-d.js} +1 -1
- package/lib/public/assets/{tablet-0sIFwy2Z.js → tablet-RsMViU1S.js} +1 -1
- package/lib/public/assets/{teams-BFhWbK5i.js → teams-Dr0FkHHP.js} +1 -1
- package/lib/public/assets/{trash-2-BcQxmJP-.js → trash-2-CYQosy3T.js} +1 -1
- package/lib/public/assets/{upload-BucqEWub.js → upload-DRltjrDF.js} +1 -1
- package/lib/public/assets/{use-password-reset-mode-XoxXVCzm.js → use-password-reset-mode-DtUlGfEB.js} +1 -1
- package/lib/public/assets/{users-DyB6E3FF.js → users-Dm7GOgLZ.js} +1 -1
- package/lib/public/assets/{users-B7uveXL_.js → users-GL3VzMF-.js} +1 -1
- package/lib/public/assets/video-off-DvHtrcFg.js +6 -0
- package/lib/public/assets/{webhook-settings-qoHAETzC.js → webhook-settings-BKJqCNNZ.js} +1 -1
- package/lib/public/assets/{zap-CqGOjAjn.js → zap-Dg_oVDEp.js} +1 -1
- package/lib/public/index.html +2 -2
- package/package.json +1 -1
- package/lib/public/assets/DeviceMosaicView-O292tZkA.js +0 -2
- package/lib/public/assets/device-explorer-CCbOXiB6.css +0 -1
- package/lib/public/assets/device-explorer-CIjs3BXP.js +0 -265
- package/lib/public/assets/keycodes-bIEJfQzr.js +0 -1
- package/lib/public/assets/layers-CLuKN5Oy.js +0 -11
- package/lib/public/assets/selector-detail-page-8xf4CxH5.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const O={HOME:3,BACK:4,APP_SWITCH:187,VOLUME_UP:24,VOLUME_DOWN:25},E={HOME:"home",VOLUME_UP:"volumeup",VOLUME_DOWN:"volumedown"};export{O as A,E as I};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{c as a}from"./index-BHDlQcd6.js";/**
|
|
2
|
-
* @license lucide-react v0.555.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const e=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],c=a("chevron-left",e);/**
|
|
7
|
-
* @license lucide-react v0.555.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const o=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],n=a("layers",o);export{c as C,n as L};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as I,x as A,W as F,r,X as v,j as e,J as f,D as w,C as R,A as D}from"./index-BHDlQcd6.js";import{f as g}from"./time-B8FIgwPE.js";import{P as S}from"./page-header-DhD-Kua9.js";import{f as P,H as B,V as H,E as L}from"./selector-health-BP45B44s.js";import{C as M,L as E}from"./layers-CLuKN5Oy.js";import{C as U}from"./circle-check-Cokzy9a2.js";import{Z as O}from"./zap-CqGOjAjn.js";import{C as q}from"./check-DYccNk73.js";import{C as K}from"./copy-BKOm9hko.js";function V(d){const h=Date.parse(d);if(!Number.isFinite(h))return"";const x=Math.max(0,Date.now()-h),l=Math.floor(x/1e3);if(l<60)return`${l}s ago`;const i=Math.floor(l/60);if(i<60)return`${i}m ago`;const o=Math.floor(i/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function X(d){return d===0?"$0":d<.01?"<$0.01":`$${d.toFixed(2)}`}const te=()=>{const d=I(),{toast:h}=A(),[x]=F(),l=x.get("value")??"",i=x.get("strategy")??"",o=parseInt(x.get("windowDays")??"30",10)||30,[t,y]=r.useState(null),[a,p]=r.useState(null),[_,C]=r.useState(!1),[$,T]=r.useState(!1),[N,k]=r.useState(null),b=r.useCallback(async()=>{if(l){C(!0);try{const s=await v.getHealingSelectorDetail(l,o);y(s??null)}catch{y(null)}finally{C(!1),T(!0)}}},[l,o]),j=r.useCallback(async()=>{if(!i||!l){p(null);return}try{const s=await v.getSelectorState(i,l);p((s==null?void 0:s.state)??null)}catch{p(null)}},[i,l]);r.useEffect(()=>{b()},[b]),r.useEffect(()=>{j()},[j]);const m=r.useCallback(async s=>{if(!i||!l)return;const n=(()=>{switch(s){case"mark_fixed":return"Mark this selector as fixed? Move to Pending Verification.";case"mute":return"Mute this selector? It will be hidden from Hotspots, the CI gate, and digests.";case"unmute":return"Unmute this selector?";case"cancel_verification":return"Cancel verification? The selector returns to Active and the clean-build counter resets."}})();if(window.confirm(n))try{await v.postSelectorStateAction({original_strategy:i,original_selector:l,action:s}),h("Done.","success"),j()}catch(c){const u=c!=null&&c.currentStatus?` (currently ${c.currentStatus})`:"";h(`${(c==null?void 0:c.message)??"Action failed"}${u}`,"error")}},[i,l,h,j]),z=(s,n)=>{navigator.clipboard.writeText(s).catch(()=>{}),k(n),setTimeout(()=>k(c=>c===n?null:c),1500)};return l?e.jsxs("div",{className:"selector-health-page",children:[e.jsx(S,{icon:f,eyebrow:"Test quality / Selector",title:e.jsx("span",{className:"sh-detail-title",children:e.jsx("code",{title:l,children:l})}),subtitle:`All heals for this selector over the last ${o} days.`,action:e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"sh-back-btn",onClick:()=>d("/selector-health"),children:[e.jsx(M,{size:12})," Back"]}),e.jsxs("button",{className:"sh-refresh-btn",onClick:b,disabled:_,title:"Refresh",children:[e.jsx(w,{size:12,className:_?"animate-spin":""}),"Refresh"]})]})}),e.jsxs("div",{className:"sh-content",children:[i&&e.jsxs("div",{className:"sh-detail-strategy-line",title:"Tuple identity for this drill-down",children:[e.jsx("span",{className:"sh-strategy-badge",children:P(i)}),e.jsx("code",{children:l})]}),!i&&e.jsxs("div",{className:"sh-detail-banner",children:["Showing every strategy that ever healed this selector value. To scope to a single tuple, append ",e.jsx("code",{children:"?strategy=<name>"})," ","to the URL or open this row from the Active tab on Selector Health."]}),a&&e.jsxs("div",{className:`sh-detail-state sh-detail-state--${a.status}`,children:[e.jsxs("div",{className:"sh-detail-state__head",children:[e.jsxs("span",{className:"sh-detail-state__badge",children:[a.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsx(B,{size:16,style:{color:"var(--color-highlight)"}}),e.jsx("span",{children:"Pending verification"})]}),a.status==="resolved"&&e.jsxs(e.Fragment,{children:[e.jsx(U,{size:16,style:{color:"var(--color-success)"}}),e.jsx("span",{children:"Resolved"})]}),a.status==="muted"&&e.jsxs(e.Fragment,{children:[e.jsx(H,{size:16,style:{color:"var(--text-muted)"}}),e.jsx("span",{children:"Muted"})]}),a.status==="active"&&(a.regression_count>0?e.jsxs(e.Fragment,{children:[e.jsx(R,{size:16,style:{color:"var(--amber)"}}),e.jsxs("span",{children:["Active — regressed ",a.regression_count,"×"]})]}):e.jsxs(e.Fragment,{children:[e.jsx(O,{size:16}),e.jsx("span",{children:"Active"})]}))]}),e.jsxs("div",{className:"sh-detail-state__actions",children:[a.status==="active"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"sh-action-btn sh-action-btn--primary",onClick:()=>m("mark_fixed"),children:"Mark fixed"}),e.jsx("button",{type:"button",className:"sh-action-btn",onClick:()=>m("mute"),children:"Mute"})]}),a.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"sh-action-btn",onClick:()=>m("cancel_verification"),children:"Cancel verification"}),e.jsx("button",{type:"button",className:"sh-action-btn",onClick:()=>m("mute"),children:"Mute"})]}),a.status==="resolved"&&e.jsx("button",{type:"button",className:"sh-action-btn",onClick:()=>m("mute"),children:"Mute"}),a.status==="muted"&&e.jsx("button",{type:"button",className:"sh-action-btn",onClick:()=>m("unmute"),children:"Unmute"})]})]}),e.jsxs("div",{className:"sh-detail-state__meta",children:[a.fixed_at&&e.jsxs("span",{children:["Marked fixed: ",g(a.fixed_at)]}),a.resolved_at&&e.jsxs("span",{children:["Resolved: ",g(a.resolved_at)]}),a.muted_at&&e.jsxs("span",{children:["Muted: ",g(a.muted_at)]}),a.status==="pending"&&e.jsxs("span",{children:["Clean builds: ",a.clean_builds_count,"/3"]}),a.regression_count>0&&e.jsxs("span",{children:["Regressions on record: ",a.regression_count]})]})]}),_&&!$?e.jsxs("div",{className:"sh-empty",children:[e.jsx(w,{size:18,className:"animate-spin"}),e.jsx("span",{children:"Loading detail…"})]}):!t||t.healCount===0?e.jsxs("div",{className:"sh-empty sh-empty--clean",children:[e.jsx(f,{size:28}),e.jsxs("div",{children:[e.jsx("div",{className:"sh-empty__title",children:"No heals recorded"}),e.jsxs("div",{className:"sh-empty__subtitle",children:["This selector has no healing events in the last ",o," days."]})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"sh-detail-stats",children:[e.jsxs("div",{className:"sh-detail-stat",children:[e.jsx("span",{className:"sh-detail-stat__label",children:"Heals"}),e.jsx("span",{className:"sh-detail-stat__value",children:t.healCount})]}),e.jsxs("div",{className:"sh-detail-stat",children:[e.jsx("span",{className:"sh-detail-stat__label",children:"Sessions"}),e.jsx("span",{className:"sh-detail-stat__value",children:t.sessionCount})]}),e.jsxs("div",{className:"sh-detail-stat",children:[e.jsx("span",{className:"sh-detail-stat__label",children:"Est. cost"}),e.jsx("span",{className:"sh-detail-stat__value",children:X(t.estCostUsd)})]}),e.jsxs("div",{className:"sh-detail-stat",children:[e.jsx("span",{className:"sh-detail-stat__label",children:"Tiers used"}),e.jsx("span",{className:"sh-detail-stat__value",children:Object.keys(t.byTier).length||"—"})]})]}),e.jsxs("div",{className:"sh-detail-grid",children:[e.jsxs("section",{className:"sh-card",children:[e.jsxs("header",{className:"sh-card__head",children:[e.jsx(E,{size:12}),e.jsx("span",{children:"Suggested rewrites"}),e.jsx("span",{className:"sh-card__hint",children:"every alternate the healer landed on, ranked by frequency"})]}),e.jsxs("ul",{className:"sh-alternates",children:[t.alternates.length===0&&e.jsx("li",{className:"sh-alternates__empty",children:"No healed selectors recorded — only the failure was captured."}),t.alternates.map((s,n)=>{const c=Math.round(s.share*100),u=`alt-${n}`;return e.jsxs("li",{className:"sh-alternate",children:[e.jsxs("div",{className:"sh-alternate__top",children:[e.jsxs("span",{className:"sh-alternate__share",children:[c,"%"]}),e.jsx("code",{className:"sh-alternate__value",title:s.healedSelector,children:s.healedSelector}),e.jsx("button",{type:"button",className:`sh-icon-btn ${N===u?"copied":""}`,onClick:()=>z(s.healedSelector,u),"aria-label":"Copy alternate",title:N===u?"Copied":"Copy",children:N===u?e.jsx(q,{size:11}):e.jsx(K,{size:11})})]}),e.jsxs("div",{className:"sh-alternate__meta",children:[e.jsxs("span",{children:[s.count," heal",s.count===1?"":"s"]}),s.averageConfidence!==null&&e.jsxs("span",{children:["· avg ",Math.round(s.averageConfidence*100),"% confidence"]}),s.tiers.length>0&&e.jsxs("span",{children:["· via ",s.tiers.join(", ")]})]})]},s.healedSelector)})]})]}),e.jsxs("section",{className:"sh-card",children:[e.jsxs("header",{className:"sh-card__head",children:[e.jsx(D,{size:12}),e.jsx("span",{children:"Breakdown"})]}),e.jsxs("div",{className:"sh-breakdown",children:[e.jsxs("div",{className:"sh-breakdown__group",children:[e.jsx("div",{className:"sh-breakdown__label",children:"By tier"}),Object.entries(t.byTier).sort((s,n)=>n[1]-s[1]).map(([s,n])=>e.jsxs("div",{className:"sh-breakdown__row",children:[e.jsx("span",{className:"sh-tier-pill",children:s}),e.jsx("span",{className:"sh-breakdown__count",children:n})]},s)),Object.keys(t.byTier).length===0&&e.jsx("div",{className:"sh-breakdown__empty",children:"none recorded"})]}),e.jsxs("div",{className:"sh-breakdown__group",children:[e.jsx("div",{className:"sh-breakdown__label",children:"By platform"}),Object.entries(t.byPlatform).sort((s,n)=>n[1]-s[1]).map(([s,n])=>e.jsxs("div",{className:"sh-breakdown__row",children:[e.jsx("span",{className:"sh-platform-pill",children:s}),e.jsx("span",{className:"sh-breakdown__count",children:n})]},s))]}),e.jsxs("div",{className:"sh-breakdown__group",children:[e.jsx("div",{className:"sh-breakdown__label",children:"By build"}),t.byBuild.slice(0,8).map(s=>e.jsxs("div",{className:"sh-breakdown__row",children:[e.jsx("span",{className:"sh-build-pill",title:s.buildId,children:s.buildId==="unattached"?"unattached":s.buildId.length>12?s.buildId.slice(0,8)+"…":s.buildId}),e.jsx("span",{className:"sh-breakdown__count",children:s.count})]},s.buildId)),t.byBuild.length===0&&e.jsx("div",{className:"sh-breakdown__empty",children:"none recorded"})]})]})]})]}),e.jsxs("section",{className:"sh-card",children:[e.jsxs("header",{className:"sh-card__head",children:[e.jsx("span",{children:"Timeline"}),e.jsxs("span",{className:"sh-card__hint",children:["most recent ",t.timeline.length," of ",t.healCount," heal",t.healCount===1?"":"s"]})]}),e.jsx("div",{className:"sh-timeline",children:t.timeline.map(s=>e.jsxs("div",{className:"sh-timeline__row",children:[e.jsx("span",{className:"sh-timeline__when",children:V(s.createdAt)}),s.tier&&e.jsx("span",{className:"sh-tier-pill",children:s.tier}),e.jsx("span",{className:"sh-timeline__cmd",children:s.commandName??"—"}),e.jsx("span",{className:"sh-timeline__device",children:s.deviceName??s.deviceUdid??"—"}),e.jsx("code",{className:"sh-timeline__healed",title:s.healedSelector??"",children:s.healedSelector??"—"}),s.confidence!==null&&e.jsxs("span",{className:"sh-timeline__conf",children:[Math.round(s.confidence*100),"%"]}),s.buildId&&s.sessionId&&e.jsx("a",{className:"sh-timeline__link",href:`/xenon/builds/${encodeURIComponent(s.buildId)}/sessions/${encodeURIComponent(s.sessionId)}`,title:"Open session detail",children:e.jsx(L,{size:11})})]},s.id))})]})]})]})]}):e.jsxs("div",{className:"selector-health-page",children:[e.jsx(S,{icon:f,eyebrow:"Test quality",title:"Selector detail",subtitle:"No selector specified."}),e.jsx("div",{className:"sh-content",children:e.jsxs("button",{className:"sh-back-btn",onClick:()=>d("/selector-health"),children:[e.jsx(M,{size:12})," Back to Selector health"]})})]})};export{te as default};
|