spexcode 0.5.5 → 0.5.6
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/package.json +1 -1
- package/spec-cli/src/git.ts +80 -40
- package/spec-cli/src/index.ts +7 -2
- package/spec-cli/src/reviewSnapshot.ts +4 -0
- package/spec-cli/src/reviews.ts +10 -5
- package/spec-dashboard/dist/assets/{App-C5vbTw8Q.js → App-B72LuS5I.js} +2 -2
- package/spec-dashboard/dist/assets/Dashboard-C5X4Va3V.js +27 -0
- package/spec-dashboard/dist/assets/{EvalsPage-BS7ITcNo.js → EvalsPage-BTvJIW8Q.js} +2 -2
- package/spec-dashboard/dist/assets/IssuesPage-Bn94h_HQ.js +1 -0
- package/spec-dashboard/dist/assets/{MobileApp-DVLnk9hz.js → MobileApp-ClbtwZ1e.js} +2 -2
- package/spec-dashboard/dist/assets/{Modal-6mHq6fbZ.js → Modal-6l_QtCKF.js} +1 -1
- package/spec-dashboard/dist/assets/{PageScroll-CAY4S4g4.js → PageScroll-B2kxcqJJ.js} +1 -1
- package/spec-dashboard/dist/assets/{ProjectsPage-UQyzsTWN.js → ProjectsPage-C8IPsMKV.js} +1 -1
- package/spec-dashboard/dist/assets/{SessionInterface-DKU4c1Z-.js → SessionInterface-B5jf7dW7.js} +11 -11
- package/spec-dashboard/dist/assets/SessionWindow-Dag_GiJB.js +1 -0
- package/spec-dashboard/dist/assets/{Settings-igR17pns.js → Settings-J3aibcXo.js} +1 -1
- package/spec-dashboard/dist/assets/{Thread-B-ZUarN1.js → Thread-Dg35J-Pu.js} +3 -3
- package/spec-dashboard/dist/assets/{TimelineChat-sc49Qj5d.js → TimelineChat-f0UF9fXq.js} +1 -1
- package/spec-dashboard/dist/assets/{data-B1ot4PF0.js → data-SNi0AmVT.js} +1 -1
- package/spec-dashboard/dist/assets/{index-BqBNCa1V.js → index-BUKLPN_4.js} +10 -10
- package/spec-dashboard/dist/index.html +1 -1
- package/spec-dashboard/dist/assets/Dashboard-u8RIS3NY.js +0 -27
- package/spec-dashboard/dist/assets/IssuesPage-DXbqQFW_.js +0 -1
- package/spec-dashboard/dist/assets/SessionWindow-zGwJaGbR.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as D,f as z,A,r as v,j as e,n as H,g as R,c as F,I as $,h as Q,q as G,s as V}from"./index-BqBNCa1V.js";import{m as J,n as X,o as Z,q as W,r as ee}from"./data-B1ot4PF0.js";import{l as se,n as te,D as P,a0 as _,j as ne,g as ie,d as C,f as E,O as le,a as U,q as M,R as ae,a1 as re,L as oe,S as ce,F as ue,K as de,a2 as fe,a3 as pe,a4 as q,a5 as me,a6 as K,a7 as O,M as ve}from"./Thread-B-ZUarN1.js";import"./PageScroll-CAY4S4g4.js";const Y="new",xe=s=>s.status!=="open",be=s=>{const o=Math.max(0,(Date.now()-new Date(s).getTime())/1e3);return Number.isFinite(o)?o<3600?`${Math.max(1,Math.floor(o/60))}m`:o<86400?`${Math.floor(o/3600)}h`:`${Math.floor(o/86400)}d`:""},je=s=>{const o=String(s||"").split("#"),d=o.length>1?o.at(-1):o[0];return`#${d.length>16?`${d.slice(0,13)}…`:d}`},ge=["is","state","store","author","node","session"],T=(s,o,d,c=l=>l)=>{var l,t;return(((t=(l=s==null?void 0:s.facets)==null?void 0:l[o])==null?void 0:t.options)??[]).map(u=>({value:u.value,label:u.value===""?d:c(u.value)}))};function he({data:s,loading:o,error:d,query:c,notice:l}){var a,y,x,I;const t=D();if(s&&!s.enabled)return e.jsx("div",{className:"fv-note",children:t("session.issuesOff")});const u=Array.isArray(s==null?void 0:s.items)?s.items:[],r=String(c.q??"").trim()||A,b=i=>H("issues",null,{query:G(i,A)}),m=(i,n)=>b(V(r,i,n)),p=(((y=(a=s==null?void 0:s.facets)==null?void 0:a.store)==null?void 0:y.options)??[]).map(i=>i.value).filter(Boolean),w=u,j=((x=s==null?void 0:s.counts)==null?void 0:x.open)||0,f=((I=s==null?void 0:s.counts)==null?void 0:I.closed)||0,h=F(r,"state"),L=w.map(i=>{var g,B;const n=i.status||"open";return{key:i.id,href:R("issues",i.id),content:e.jsx(e.Fragment,{children:e.jsx(ae,{state:e.jsx(U,{kind:"issue",state:n}),title:i.concern,meta:e.jsxs(e.Fragment,{children:[e.jsx("span",{"data-tip":i.id,children:je(i.id)}),i.by&&e.jsx("span",{"data-tip":i.by,children:t("reviewList.openedBy",{by:re(i.by)})}),i.created&&e.jsx("span",{children:t("reviewList.openedAt",{at:be(i.created)})})]}),aside:e.jsxs(e.Fragment,{children:[(((g=i.replies)==null?void 0:g.length)??0)>0&&e.jsxs("span",{className:"rl-comments","data-tip":t("session.issuesReplies",{n:i.replies.length}),children:[e.jsx($,{name:"message-square",size:14}),i.replies.length]}),p.length>1&&e.jsx("span",{className:`rl-tag fv-store-${i.store==="local"?"local":"forge"}`,children:i.store}),((B=i.nodes)==null?void 0:B[0])&&e.jsx("span",{className:"rl-tag node",children:i.nodes[0]})]})})})}}),k=e.jsxs("a",{className:"rl-new",href:R("issues",Y),children:[e.jsx($,{name:"plus",size:14}),t("session.issuesNew")]}),N={label:t("reviewList.facetStore"),value:F(r,"store"),options:T(s,"store",t("reviewList.all"))},S={label:t("reviewList.facetSession"),value:F(r,"session"),options:T(s,"session",t("reviewList.all"),i=>t(i==="present"?"reviewList.sessionPresent":"reviewList.sessionMissing"))};return e.jsx(oe,{notice:l,loading:o,error:d,title:t("reviewList.issuesTitle"),action:k,search:{value:String(c.q??"").trim()?c.q:A,onSubmit:b,placeholder:t("reviewList.searchIssues"),label:t("reviewList.search"),keys:ge,suggest:{author:T(s,"author",t("reviewList.all")).filter(i=>i.value),node:T(s,"node",t("reviewList.all")).filter(i=>i.value)}},sections:[{key:"open",label:t("reviewList.open"),count:j,active:h===""||h==="open",onSelect:()=>m("state","open")},{key:"closed",label:t("reviewList.closed"),count:f,active:h!==""&&h!=="open",onSelect:()=>m("state","closed")}],facets:e.jsx(ue,{label:N.label,value:N.value,options:N.options,clearLabel:t("reviewList.all"),onChange:i=>m("store",i),mobile:!0}),secondaryFilters:e.jsx(ce,{label:t("reviewList.filters"),clearLabel:t("reviewList.all"),groups:[{label:S.label,value:S.value,active:!!S.value,options:S.options,onChange:i=>m("session",i)}]}),rows:L,pagination:s?{page:s.page,pageCount:s.pageCount,prev:s.prev,next:s.next,hrefFor:i=>R("issues",null,Q(r,A,i))}:null,empty:{hasData:((s==null?void 0:s.sourceTotal)??0)>0,dataset:t("session.issuesEmpty"),filtered:t("session.issuesNoMatch")}})}function ye({issue:s,specs:o,sessions:d,onFocusNode:c,onOpenSession:l,onWrite:t,notice:u}){const r=D(),b=s.store==="local",m=xe(s),[p,w]=v.useState(""),[j,f]=v.useState(""),h=Array.isArray(s.nodes)?s.nodes:[],L=Array.isArray(s.replies)?s.replies:[],k=s.status||"open",N=(a,y)=>async()=>{if(!p){w(a);try{const x=await y();x!=null&&x.ok?(f(""),await(t==null?void 0:t(""))):f((x==null?void 0:x.error)||`${a} failed`)}finally{w("")}}},S=(a,y,x,I)=>e.jsx("button",{type:"button",className:`fv-close-issue fv-life-${a}`,disabled:!!p,"data-tip":I,onMouseDown:i=>i.preventDefault(),onClick:N(a,x),children:p===a?r("session.issuesActing"):y});return e.jsxs(P,{title:s.concern,backHref:M("issues"),backLabel:r("detail.backToIssues"),status:e.jsx(U,{kind:"issue",state:k,showLabel:!0,className:"ds-status-pill",size:16}),side:e.jsxs(e.Fragment,{children:[e.jsx(C,{label:r("detail.sideIssue"),children:e.jsx(E,{text:s.id,mono:!0})}),e.jsxs(C,{label:r("detail.sideStore"),children:[e.jsx(E,{text:s.store,className:`fv-store fv-store-${b?"local":"forge"}`}),s.url&&e.jsx(E,{text:r("session.issuesOpenOnStore",{store:Se(s.store)}),href:s.url,external:!0})]}),s.by&&e.jsx(C,{label:r("detail.sideOriginator"),children:b?e.jsx(le,{originator:s.by,sessions:d,kind:"issue",onOpenSession:l}):e.jsx(E,{text:s.by,dim:!0})}),h.length>0&&e.jsx(C,{label:r("detail.sideNodes"),children:h.map(a=>e.jsx(E,{text:a,mono:!0,tip:r("session.issuesFocusNode"),onClick:()=>c==null?void 0:c(a)},a))})]}),composer:e.jsx(ie,{onSend:(a,y)=>Z(s.id,a,y),specs:o,sessions:d,focusId:h[0]||null,onDone:t,actionsEnd:!m&&e.jsxs(e.Fragment,{children:[j&&e.jsx("span",{className:"fv-error",children:j}),b&&S("promote",r("session.issuesPromote"),()=>J(s.id),r("session.issuesPromoteTitle")),S("close",r("session.issuesCloseIssue"),()=>X(s.id),r("session.issuesCloseIssueTitle"))]})},s.id),children:[u&&e.jsx("div",{className:"fv-notice",children:u}),s.body&&e.jsx("div",{className:"fvd-body",children:e.jsx(_,{body:s.body})}),e.jsx(ne,{replies:L,threadId:b?s.id:null,onRemarkChange:()=>t==null?void 0:t("")})]})}function we(s,o){const[d,c]=v.useState(null),[l,t]=v.useState(null),u=v.useRef(0),r=v.useCallback(async()=>{if(!s)return null;const m=++u.current;t(null);try{const p=await W(s);return m===u.current&&c(p),p}catch(p){return m===u.current&&(c(!1),t(p instanceof Error?p.message:String(p))),null}},[s]),b=v.useRef(null);return v.useEffect(()=>{s!==b.current&&(b.current=s,c(null),t(null)),s&&r()},[s,o,r]),{issue:d,error:l,reload:r}}function Ae({onFocusNode:s,onOpenSession:o,specs:d=[],sessions:c=[],issuesStamp:l=null}){var S;const t=D(),{param:u,query:r}=z(),b=u===Y,m=String(r.q??"").trim()||A,p=se(r.page),w=v.useMemo(()=>c.map(a=>a.id).join(","),[c]),j=te("issues",m,p,{enabled:!u||b,refreshKey:`${l??""}|${w}`}),f=we(b?null:u,l),[h,L]=v.useState(""),k=a=>{a&&(L(a),setTimeout(()=>L(""),6e3))},N=async a=>{k(a),await(u?f.reload():j.reload())};if(b){if(j.data&&!j.data.enabled)return e.jsx("div",{className:"fv-note",children:t("session.issuesOff")});const a=Array.isArray((S=j.data)==null?void 0:S.stores)&&j.data.stores.length?j.data.stores:[{id:"local",label:"local",kind:"local"}];return e.jsx(Le,{specs:d,sessions:c,stores:a,onCreated:(y,x)=>{k(x),H("issues",y,{replace:!0})}})}return u?f.issue==null?e.jsx("div",{className:"fv-note",children:t("session.issuesLoading")}):f.error?e.jsx(P,{failure:f.error,listHref:R("issues"),listLabel:t("reviewShell.backToIssues")}):f.issue===!1?e.jsx(P,{missing:t("reviewShell.issueNotFound",{id:u}),listHref:R("issues"),listLabel:t("reviewShell.backToIssues")}):e.jsx(ye,{issue:f.issue,specs:d,sessions:c,onFocusNode:s,onOpenSession:o,onWrite:N,notice:h}):e.jsx(he,{data:j.data,loading:j.loading,error:j.error,query:r,notice:h})}const Ne={github:"GitHub",gitlab:"GitLab"},Se=s=>Ne[s]||s;function Le({specs:s,sessions:o,stores:d,onCreated:c}){var i;const l=D(),[t,u]=v.useState(((i=d[0])==null?void 0:i.id)||"local"),[r,b]=v.useState(""),[m,p]=v.useState(""),[w,j]=v.useState(!1),[f,h]=v.useState(!1),[L,k]=v.useState(""),N=v.useRef(null),{launchers:S}=de(),a=fe({inputRef:N,value:m,setValue:p,specs:s,sessions:o,launchers:S});v.useEffect(()=>{var n;d.some(g=>g.id===t)||u(((n=d[0])==null?void 0:n.id)||"local")},[d,t]);const y=[...new Set([...m.matchAll(pe)].map(n=>n[1]))],x=async()=>{const n=r.trim();if(!(!n||f)){h(!0),k("");try{const g=await ee({concern:n,body:m.trim()||void 0,store:t});g!=null&&g.ok&&g.id?c==null||c(g.id,g.outcomes||""):k((g==null?void 0:g.error)||l("session.issuesPostFailed"))}finally{h(!1)}}},I=(n,g)=>e.jsx("button",{type:"button",role:"tab","aria-selected":w===n,className:`fv-tab ${w===n?"on":""}`,onClick:()=>j(n),children:g});return e.jsx(P,{title:l("session.issuesNewTitle"),backHref:M("issues"),backLabel:l("detail.backToIssues"),side:e.jsxs(e.Fragment,{children:[e.jsx(C,{label:l("session.issuesStoreLabel"),children:e.jsxs("label",{className:"fv-store-pick",children:[e.jsx("span",{className:"sr-only",children:l("session.issuesStoreLabel")}),e.jsx("select",{value:t,disabled:f,onChange:n=>u(n.target.value),children:d.map(n=>e.jsx("option",{value:n.id,children:n.label||n.id},n.id))})]})}),e.jsx(C,{label:l("detail.sideNodes"),children:y.length>0?y.map(n=>e.jsx(E,{text:n,mono:!0},n)):e.jsx(E,{text:l("session.issuesNodesHint"),dim:!0})})]}),children:e.jsxs("div",{className:"fv-new-page",children:[e.jsxs("label",{className:"fv-field",children:[e.jsx("span",{className:"fv-field-label",children:l("session.issuesTitleLabel")}),e.jsx("input",{className:"fv-input fv-new-title",value:r,placeholder:l("session.issuesConcernPlaceholder"),disabled:f,autoFocus:!0,onChange:n=>b(n.target.value),onKeyDown:n=>{q(n)||n.key==="Enter"&&(n.preventDefault(),x())}})]}),e.jsxs("div",{className:"fv-field",children:[e.jsxs("div",{className:"fv-field-head",children:[e.jsx("span",{className:"fv-field-label",children:l("session.issuesBodyLabel")}),e.jsxs("div",{className:"fv-tabs",role:"tablist","aria-label":l("session.issuesBodyLabel"),children:[I(!1,l("session.issuesWrite")),I(!0,l("session.issuesPreview"))]})]}),e.jsx(me,{className:"fv-new-compose",editor:w?e.jsx("div",{className:"fv-new-preview",role:"tabpanel",children:m.trim()?e.jsx(_,{body:m}):e.jsx("span",{className:"fv-new-hint",children:l("session.issuesPreviewEmpty")})}):e.jsxs("div",{className:"fv-tawrap",role:"tabpanel",children:[e.jsx(ve,{ref:N,className:"fv-textarea",rows:1,value:m,placeholder:l("session.issuesBodyPlaceholder"),disabled:f,onChange:n=>{p(n.target.value),a.sync(n.target)},onSelect:n=>a.sync(n.target),onBlur:a.close,onKeyDown:n=>{q(n)||a.onKeyDown(n)||n.key==="Enter"&&(n.metaKey||n.ctrlKey)&&(n.preventDefault(),x())}}),a.menuEl]}),footer:e.jsxs("div",{className:"fv-actions",children:[e.jsx(K,{label:l("thread.mentionActor"),disabled:f||w,onClick:()=>O(N.current,"@",p,a.sync),children:"@"}),e.jsx(K,{label:l("thread.mentionNode"),disabled:f||w,onClick:()=>O(N.current,"[[",p,a.sync),children:"[["})]})})]}),e.jsxs("div",{className:"fv-new-actions",children:[L&&e.jsx("span",{className:"fv-error",children:L}),e.jsx("a",{className:"fv-cancel",href:M("issues"),children:l("session.issuesCancel")}),e.jsx("button",{type:"button",className:"fv-post",disabled:f||!r.trim(),onClick:x,children:l(f?"session.issuesSending":"session.issuesPost")})]})]})})}export{ge as ISSUE_QUERY_KEYS,ye as IssueDetailPage,he as IssuesListPage,Y as NEW_PARAM,Ae as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as n,u as p,r as h,I as j}from"./index-BqBNCa1V.js";import{G as N,s as S,z as k,U as z,N as v}from"./Thread-B-ZUarN1.js";function g(s){let e=2166136261;for(let o=0;o<(s||"").length;o++)e^=s.charCodeAt(o),e=Math.imul(e,16777619);return e>>>0}function m(s){return g(s)%360}function H(s){const e=m(s);return{bg:`hsl(${e} 55% 42%)`,fg:`hsl(${e} 70% 92%)`}}function C(s){return`hsl(${m(s)} 65% 50%)`}const x=["◆","▲","●","■","★","✦","⬟","⬢","❖","◈","✸","⟡","✚","❂","◐","◑","⬣","▰","✶","⬤","✹","◇","⊛","✺"],b=["circle","rounded","square","hex"];function T(s){const e=g(s);return{seed:s,glyph:x[(e>>>9)%x.length],shape:b[(e>>>17)%b.length],...H(s)}}function A({seed:s,status:e,title:o,size:l=16}){const a=T(s),t={width:l,height:l};return n.jsx("span",{className:`avatar av-st-${e||"none"}`,"data-tip":o,"aria-label":o,style:t,children:n.jsx("span",{className:`av-face av-gen av-${a.shape}`,style:{...t,background:a.bg,color:a.fg,fontSize:l*.62},children:a.glyph})})}const M={merged:{color:"#859900"},active:{color:"#cb4b16"},drift:{color:"#b58900"},pending:{color:"#93a1a1"}},F={added:"+",edited:"~",deleted:"✕",moved:"→"},L=({size:s=12})=>n.jsx(j,{name:"lock",size:s});function E(s){if(!(s!=null&&s.length))return null;const e={};return s.forEach(o=>{e[o.op]=(e[o.op]||0)+1}),Object.entries(e).map(([o,l])=>`${F[o]}${l}`).join(" ")}function G({guides:s=[],expandable:e,kin:o=0}){return n.jsxs("span",{className:"sess-lead",children:[s.map((l,a)=>{const t=a===s.length-1?l?"tee":"elbow":l?"rail":"gap";return n.jsx("span",{className:`sess-rail ${t}`,"aria-hidden":"true"},a)}),e&&n.jsx("span",{className:"sess-fold pod sess-fold-slot","aria-hidden":"true",children:o})]})}function O({expanded:s,rollup:e,kin:o,onToggle:l}){const a=`${s?"Hide":"Show"} ${o} nested session${o===1?"":"s"}`;return n.jsx("button",{type:"button",tabIndex:-1,className:`sess-fold pod sess-fold-control${s?" open":""}`,style:s?{color:e,borderColor:e}:{background:e,borderColor:e},"aria-expanded":s,"aria-label":a,"data-tip":a,onMouseDown:t=>t.preventDefault(),onClick:t=>{t.stopPropagation(),l()},children:o})}function P(){const[s,e]=h.useState(()=>new Set),o=a=>e(t=>{const c=new Set(t);return c.has(a)?c.delete(a):c.add(a),c}),l=h.useCallback(a=>e(t=>{const c=a.filter(u=>u&&!t.has(u));if(!c.length)return t;const d=new Set(t);return c.forEach(u=>d.add(u)),d}),[]);return{expanded:s,toggle:o,expand:l}}function W({s,locked:e,showAvatar:o=!0,lead:l=null}){const a=p(),t=E(s.ops),c=S(s),d=a(`status.${s.status}`);return n.jsxs(n.Fragment,{children:[l,o&&n.jsx(A,{seed:s.id,status:s.status,title:`${k(s)} · ${d} — ${s.id.slice(0,8)}`}),n.jsxs("span",{className:"sess-meta",children:[n.jsx("span",{className:"sess-glyph",style:{color:v[s.status]},"data-tip":d,"aria-label":d,children:z[s.status]}),t&&n.jsx("span",{className:"sess-ops",children:t})]}),n.jsx("span",{className:"sess-id","data-tip":c,children:c}),s.archiveHazard&&n.jsx("span",{className:"sess-hazard","data-tip":s.archiveHazard,"aria-label":s.archiveHazard,children:n.jsx(j,{name:"issue-opened",size:13})}),e&&n.jsx("span",{className:"sess-lock","data-tip":a("sessionWindow.lockedTitle"),children:n.jsx(L,{})})]})}function D({item:s,baseClass:e,onToggle:o}){const l=p(),a=`${e} ${e}-${s.zone}${s.zone==="offline"?` si-zone-fold${s.folded?"":" open"}`:""}`;if(s.zone!=="offline")return n.jsx("div",{className:a,children:l(`sessionZone.${s.zone}`)});const t=l(s.folded?"sessionZone.showHistory":"sessionZone.hideHistory",{n:s.count});return n.jsxs("div",{className:a,children:[s.count>0&&n.jsx("button",{type:"button",tabIndex:-1,className:"si-zone-count","aria-expanded":!s.folded,"aria-label":t,"data-tip":t,onMouseDown:c=>c.preventDefault(),onClick:o,children:s.count}),n.jsx("span",{className:"si-zone-label",children:l(`sessionZone.${s.zone}`)})]})}function U({sessions:s,activeId:e,onPick:o,onOpenSession:l}){const a=p(),{expanded:t,toggle:c}=P(),[d,u]=h.useState(!1),w=h.useMemo(()=>N(s,r=>t.has(r),{zoneFolded:r=>r==="offline"&&!d,keepVisible:r=>r.source===e}),[s,t,d,e]);return n.jsx("div",{className:"sesswin",children:s.length===0?n.jsxs("div",{className:"sesswin-empty",children:[a("sessionWindow.emptyBefore"),n.jsx("kbd",{children:"⏎"}),a("sessionWindow.emptyAfter")]}):w.map(r=>{if(r.type==="zone")return n.jsx(D,{item:r,baseClass:"sesswin-zone",onToggle:()=>u(y=>!y)},`zone-${r.zone}`);const i=r.s,f=i.source===e,$=r.expandable||r.depth?n.jsx(G,{guides:r.guides,expandable:r.expandable,kin:r.kin}):null;return n.jsxs("div",{className:"sess-tree-row sesswin-tree-row",style:{"--sess-fold-indent":`${r.depth*14}px`},children:[n.jsx("button",{type:"button",className:f?"sess-row locked":"sess-row",style:{"--ov":C(i.id)},onClick:()=>o(i),onDoubleClick:()=>l(i.id),"data-tip":a("sessionWindow.rowTitle"),children:n.jsx(W,{s:i,locked:f,lead:$})}),r.expandable&&n.jsx(O,{expanded:r.expanded,rollup:r.rollup,kin:r.kin,onToggle:()=>c(i.id)})]},i.id)})})}export{A,O as F,F as G,L,G as R,D as S,W as a,M as b,U as c,C as l,P as u};
|