@cuongtran001/kanna 1.55.0 → 1.55.2

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.
Files changed (56) hide show
  1. package/dist/client/assets/{BoardsPage-Cel47J2v.js → BoardsPage-C3FpHO5c.js} +1 -1
  2. package/dist/client/assets/{BoardsRoutePage-BlCcVb6b.js → BoardsRoutePage-Cq-zNkFB.js} +1 -1
  3. package/dist/client/assets/{ChatPage-DC0Kt4jG.js → ChatPage-APGyM5Xo.js} +2 -2
  4. package/dist/client/assets/{CronJobRow-CfIsyUSK.js → CronJobRow-tm98WvM8.js} +1 -1
  5. package/dist/client/assets/{CronJobsPage-tu8KSA9y.js → CronJobsPage-CY5XOuBx.js} +1 -1
  6. package/dist/client/assets/{KannaSocketProvider-DGMxaS4m.js → KannaSocketProvider-DJv2gp2E.js} +1 -1
  7. package/dist/client/assets/{LocalProjectsPage-BDQwNV_1.js → LocalProjectsPage-HkyhcYMu.js} +1 -1
  8. package/dist/client/assets/{SettingsPage-UBOXH-wz.js → SettingsPage-Ch6NeRlN.js} +1 -1
  9. package/dist/client/assets/{StackBoardsRoutePage-CpHVUM9J.js → StackBoardsRoutePage-Dy0DWX2A.js} +1 -1
  10. package/dist/client/assets/{WorkflowsPage-cK32iole.js → WorkflowsPage-i0GCOhc6.js} +1 -1
  11. package/dist/client/assets/{WorkflowsSection-BjvVoG_8.js → WorkflowsSection-DRXu7ji3.js} +1 -1
  12. package/dist/client/assets/{asJsonValue-B_6rT8Wt.js → asJsonValue-C5MTs1l0.js} +1 -1
  13. package/dist/client/assets/{auth-CYSbIveQ.js → auth-BoU4Sy16.js} +1 -1
  14. package/dist/client/assets/{branding-Bjruz9Qs.js → branding-CaxlVtaJ.js} +1 -1
  15. package/dist/client/assets/{chatFocusPolicy-BmePbD4q.js → chatFocusPolicy-D5WAGQzz.js} +1 -1
  16. package/dist/client/assets/{chatSounds-OoVgFHwb.js → chatSounds-DCOu073Z.js} +1 -1
  17. package/dist/client/assets/chevron-right-9vF-mw9m.js +1 -0
  18. package/dist/client/assets/{clipboard.adapter-B3Zgvh3c.js → clipboard.adapter-CyzHY22e.js} +1 -1
  19. package/dist/client/assets/{columnStyle-B0g3bV30.js → columnStyle-ctlctYKv.js} +1 -1
  20. package/dist/client/assets/{editor-icons-BHNj5QlM.js → editor-icons-DRUxmX7g.js} +1 -1
  21. package/dist/client/assets/{ellipsis-DHDFLMQ7.js → ellipsis-B_JMA76o.js} +1 -1
  22. package/dist/client/assets/{external-link-C7L-LIx3.js → external-link-COo-Uzb1.js} +1 -1
  23. package/dist/client/assets/{folder-DCO7Y0zB.js → folder-BPm2BBWp.js} +1 -1
  24. package/dist/client/assets/index-Db52i58i.js +81 -0
  25. package/dist/client/assets/{input-RMzzgJNb.js → input-DLIzWZj4.js} +1 -1
  26. package/dist/client/assets/{monitor-DUoqJsEe.js → monitor-CIs8RSWK.js} +1 -1
  27. package/dist/client/assets/{plus-DOezElF-.js → plus-BFyTSu3o.js} +1 -1
  28. package/dist/client/assets/{popover-DRG5-CEK.js → popover-tEW4Hfuq.js} +1 -1
  29. package/dist/client/assets/{pushClient-qZlF_mpP.js → pushClient-BGXuPFFh.js} +1 -1
  30. package/dist/client/assets/{settings-header-button-CWOh9E5B.js → settings-header-button-Dk9ksq2R.js} +1 -1
  31. package/dist/client/assets/{square-pen-7f7s2a4m.js → square-pen-D1KuPs3U.js} +1 -1
  32. package/dist/client/assets/{state-mark-BiauOkU4.js → state-mark-DyvaV7zQ.js} +1 -1
  33. package/dist/client/assets/{status-pill-DJatVHiF.js → status-pill-BlXggLew.js} +1 -1
  34. package/dist/client/assets/{statusLabel-y1-mK5JY.js → statusLabel-1tgAYyyt.js} +1 -1
  35. package/dist/client/assets/{terminal-x8VOlOOA.js → terminal-STCgoe-i.js} +1 -1
  36. package/dist/client/assets/{timer.adapter-DDmBG6OZ.js → timer.adapter-CcS8xEBd.js} +1 -1
  37. package/dist/client/assets/{useKannaState-D06FK0fV.js → useKannaState-DVfdppcs.js} +1 -1
  38. package/dist/client/assets/{workflowsStore-ylLV1fLE.js → workflowsStore-BLy5HiUX.js} +1 -1
  39. package/dist/client/index.html +19 -19
  40. package/package.json +2 -2
  41. package/src/server/auto-continue/limit-detector.test.ts +88 -0
  42. package/src/server/auto-continue/limit-detector.ts +76 -18
  43. package/src/server/claude-send-command.test.ts +86 -1
  44. package/src/server/claude-send-command.ts +37 -6
  45. package/src/server/event-store-apply.ts +1 -0
  46. package/src/server/event-store-chat-lifecycle.ts +8 -0
  47. package/src/server/event-store-helpers.ts +1 -0
  48. package/src/server/event-store-write-ops.ts +21 -1
  49. package/src/server/event-store.test.ts +21 -0
  50. package/src/server/event-store.ts +7 -1
  51. package/src/server/events.ts +12 -0
  52. package/src/server/server.test.ts +16 -0
  53. package/src/server/server.ts +2 -0
  54. package/src/shared/turn-model-selection.ts +36 -0
  55. package/dist/client/assets/chevron-right-C_7AOWfe.js +0 -1
  56. package/dist/client/assets/index-YyaT22Nm.js +0 -81
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{E as n,M as r,O as i}from"./chatFocusPolicy-BmePbD4q.js";import{t as a}from"./jsx-runtime-DREnUpxT.js";import{t as o}from"./ellipsis-DHDFLMQ7.js";import{t as s}from"./plus-DOezElF-.js";import{t as c}from"./input-RMzzgJNb.js";import{n as l,r as u,t as d}from"./popover-DRG5-CEK.js";import{o as f,r as p,s as m,t as h}from"./columnStyle-B0g3bV30.js";var g=e(t(),1),_=[],v=r()(e=>({templates:_,openMenuId:null,picking:!1,renamingId:null,error:null,setTemplates:t=>e({templates:Array.isArray(t)?t:[]}),openMenu:t=>e({openMenuId:t}),closeMenu:()=>e({openMenuId:null}),openPicker:()=>e({picking:!0,error:null}),closePicker:()=>e({picking:!1}),startRename:t=>e({renamingId:t,picking:!1,openMenuId:null}),stopRename:()=>e({renamingId:null}),setError:t=>e({error:t})}));function y(e){return e.templates}var b=e(a(),1);function x({ownerKind:e,ownerId:t,ownerName:r,socket:i,onOpenBoard:a}){let o=p(e,t),c=m(f(o)),l=v(y),u=v(e=>e.picking),d=v(e=>e.renamingId),h=v(e=>e.error),{openPicker:_,closePicker:x,startRename:C,stopRename:w,setError:E,setTemplates:D}=v.getState();(0,g.useEffect)(()=>i.subscribe({type:`boards`,ownerKind:e,ownerId:t},e=>{m.getState().setBoards(p(e.ownerKind,e.ownerId),e.boards)}),[e,t,i]),(0,g.useEffect)(()=>{let e=!1;return i.command({type:`board.templates.list`}).then(t=>{e||D(t)}).catch(()=>{}),()=>{e=!0}},[i,D]);let O=(0,g.useCallback)(async e=>{try{await i.command(e),E(null)}catch(e){E(e instanceof Error?e.message:`That did not work.`)}},[i,E]),k=(0,g.useCallback)(n=>{x(),O({type:`board.create`,ownerKind:e,ownerId:t,title:n?n.name:`Untitled board`,templateId:n?.id??null})},[x,e,t,O]),A=(0,g.useCallback)((e,t)=>{w();let n=t.trim();n!==``&&O({type:`board.update`,boardId:e,title:n})},[O,w]),j=u||c.length===0;return(0,b.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-background`,children:[(0,b.jsxs)(`header`,{className:`flex items-end justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`h1`,{className:`text-lg font-medium leading-tight tracking-[-0.01em] text-foreground`,children:`Boards`}),(0,b.jsxs)(`p`,{className:`truncate text-13 text-muted-foreground`,children:[r,c.length>0?(0,b.jsxs)(`span`,{className:`tabular-nums`,children:[` · `,c.length,` boards`]}):null]})]}),c.length>0?(0,b.jsxs)(n,{size:`sm`,onClick:_,children:[(0,b.jsx)(s,{className:`size-3.5`}),`New board`]}):null]}),h?(0,b.jsx)(`p`,{className:`border-b border-border px-6 py-2 text-13 text-destructive-text`,children:h}):null,(0,b.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[j?(0,b.jsx)(T,{templates:l,firstRun:c.length===0,onPick:k,onCancel:x}):null,c.length>0?(0,b.jsx)(`ul`,{className:`px-4 py-1`,children:c.map(e=>(0,b.jsx)(S,{board:e,renaming:d===e.id,onOpen:a,onStartRename:C,onRename:A,onCancelRename:w,onCommand:O},e.id))}):null]})]})}function S({board:e,renaming:t,onOpen:n,onStartRename:r,onRename:i,onCancelRename:a,onCommand:o}){let s=(0,g.useCallback)(()=>n(e.id),[e.id,n]),l=(0,g.useCallback)(t=>{t.key===`Enter`&&i(e.id,t.currentTarget.value),t.key===`Escape`&&a()},[e.id,a,i]),u=(0,g.useCallback)(t=>i(e.id,t.currentTarget.value),[e.id,i]);return(0,b.jsxs)(`li`,{className:`group grid grid-cols-[1fr_auto_auto] items-center gap-5 border-b border-border px-3 py-3 last:border-b-0 hover:bg-secondary`,children:[(0,b.jsx)(`div`,{className:`min-w-0`,children:t?(0,b.jsx)(c,{autoFocus:!0,defaultValue:e.title,onKeyDown:l,onBlur:u,className:`h-7 max-w-sm`,"aria-label":`Board name`}):(0,b.jsxs)(`button`,{type:`button`,onClick:s,className:`block w-full text-left`,children:[(0,b.jsx)(`span`,{className:`block truncate text-15 font-semibold tracking-[-0.005em] text-foreground`,children:e.title}),e.description?(0,b.jsx)(`span`,{className:`mt-0.5 block truncate text-13 text-muted-foreground`,children:e.description}):null]})}),(0,b.jsxs)(`div`,{className:`flex items-center gap-4 text-xs text-muted-foreground`,children:[(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.columnCount}),` columns`]}),(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.cardCount}),` cards`]})]}),(0,b.jsx)(C,{board:e,onStartRename:r,onCommand:o})]})}function C({board:e,onStartRename:t,onCommand:n}){let r=v(t=>t.openMenuId===e.id),{openMenu:i,closeMenu:a}=v.getState(),s=(0,g.useCallback)(t=>{t?i(e.id):a()},[e.id,a,i]),c=(0,g.useCallback)(()=>{a(),t(e.id)},[e.id,a,t]),f=(0,g.useCallback)(()=>{a(),n({type:`board.duplicate`,boardId:e.id,title:`${e.title} copy`})},[e.id,e.title,a,n]),p=(0,g.useCallback)(()=>{a(),n({type:`board.saveAsTemplate`,boardId:e.id,name:e.title})},[e.id,e.title,a,n]),m=(0,g.useCallback)(()=>{a(),n({type:`board.archive`,boardId:e.id})},[e.id,a,n]);return(0,b.jsxs)(d,{open:r,onOpenChange:s,children:[(0,b.jsx)(u,{asChild:!0,children:(0,b.jsx)(`button`,{type:`button`,"aria-label":`Actions for ${e.title}`,className:`rounded-md px-1.5 py-1 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 data-[state=open]:opacity-100`,children:(0,b.jsx)(o,{className:`size-4`})})}),(0,b.jsxs)(l,{align:`end`,className:`w-56 p-1`,children:[(0,b.jsx)(w,{onClick:c,children:`Rename`}),(0,b.jsx)(w,{onClick:f,children:`Duplicate structure`}),(0,b.jsx)(w,{onClick:p,children:`Save as template`}),(0,b.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,b.jsx)(w,{onClick:m,tone:`destructive`,children:`Archive`})]})]})}function w({onClick:e,children:t,tone:n}){return(0,b.jsx)(`button`,{type:`button`,onClick:e,className:i(`flex w-full items-center rounded-sm px-2 py-1.5 text-left text-xs font-medium hover:bg-secondary`,n===`destructive`&&`text-destructive-text`),children:t})}function T({templates:e,firstRun:t,onPick:r,onCancel:i}){let a=(0,g.useCallback)(()=>r(null),[r]);return(0,b.jsxs)(`div`,{className:`px-6 py-8`,children:[t?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`No boards yet.`}),(0,b.jsx)(`p`,{className:`mt-1 max-w-[58ch] text-sm text-muted-foreground`,children:`A board turns issues into work your agents can pick up. Start from a shape, or import an existing tracker.`})]}):(0,b.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`Start from a shape`}),(0,b.jsxs)(`div`,{className:`mt-4 max-w-xl rounded-lg border border-border`,children:[e.map(e=>(0,b.jsx)(E,{template:e,onPick:r},e.id)),(0,b.jsx)(`button`,{type:`button`,onClick:a,className:`flex w-full items-center border-t border-border px-3.5 py-2.5 text-left hover:bg-secondary`,children:(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:`Empty board`}),(0,b.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:`Name your own columns`})]})})]}),t?null:(0,b.jsx)(n,{variant:`ghost`,size:`sm`,className:`mt-3`,onClick:i,children:`Cancel`})]})}function E({template:e,onPick:t}){let n=(0,g.useCallback)(()=>t(e),[t,e]),r=e.definition.columns;return(0,b.jsxs)(`button`,{type:`button`,onClick:n,className:`flex w-full items-center gap-3 border-b border-border px-3.5 py-2.5 text-left last:border-b-0 hover:bg-secondary`,children:[(0,b.jsxs)(`span`,{className:`min-w-0`,children:[(0,b.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:e.name}),(0,b.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:r.map(e=>e.title).join(` · `)})]}),(0,b.jsx)(`span`,{"aria-hidden":!0,className:`ml-auto flex shrink-0 gap-1`,children:r.map((t,n)=>(0,b.jsx)(`span`,{className:i(`size-1.5 rounded-full`,t.colorToken?h[t.colorToken]:`bg-muted-icon`)},`${e.id}-${String(n)}`))})]})}export{x as t};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{E as n,M as r,O as i}from"./chatFocusPolicy-D5WAGQzz.js";import{t as a}from"./jsx-runtime-DREnUpxT.js";import{t as o}from"./ellipsis-B_JMA76o.js";import{t as s}from"./plus-BFyTSu3o.js";import{t as c}from"./input-DLIzWZj4.js";import{n as l,r as u,t as d}from"./popover-tEW4Hfuq.js";import{o as f,r as p,s as m,t as h}from"./columnStyle-ctlctYKv.js";var g=e(t(),1),_=[],v=r()(e=>({templates:_,openMenuId:null,picking:!1,renamingId:null,error:null,setTemplates:t=>e({templates:Array.isArray(t)?t:[]}),openMenu:t=>e({openMenuId:t}),closeMenu:()=>e({openMenuId:null}),openPicker:()=>e({picking:!0,error:null}),closePicker:()=>e({picking:!1}),startRename:t=>e({renamingId:t,picking:!1,openMenuId:null}),stopRename:()=>e({renamingId:null}),setError:t=>e({error:t})}));function y(e){return e.templates}var b=e(a(),1);function x({ownerKind:e,ownerId:t,ownerName:r,socket:i,onOpenBoard:a}){let o=p(e,t),c=m(f(o)),l=v(y),u=v(e=>e.picking),d=v(e=>e.renamingId),h=v(e=>e.error),{openPicker:_,closePicker:x,startRename:C,stopRename:w,setError:E,setTemplates:D}=v.getState();(0,g.useEffect)(()=>i.subscribe({type:`boards`,ownerKind:e,ownerId:t},e=>{m.getState().setBoards(p(e.ownerKind,e.ownerId),e.boards)}),[e,t,i]),(0,g.useEffect)(()=>{let e=!1;return i.command({type:`board.templates.list`}).then(t=>{e||D(t)}).catch(()=>{}),()=>{e=!0}},[i,D]);let O=(0,g.useCallback)(async e=>{try{await i.command(e),E(null)}catch(e){E(e instanceof Error?e.message:`That did not work.`)}},[i,E]),k=(0,g.useCallback)(n=>{x(),O({type:`board.create`,ownerKind:e,ownerId:t,title:n?n.name:`Untitled board`,templateId:n?.id??null})},[x,e,t,O]),A=(0,g.useCallback)((e,t)=>{w();let n=t.trim();n!==``&&O({type:`board.update`,boardId:e,title:n})},[O,w]),j=u||c.length===0;return(0,b.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-background`,children:[(0,b.jsxs)(`header`,{className:`flex items-end justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`h1`,{className:`text-lg font-medium leading-tight tracking-[-0.01em] text-foreground`,children:`Boards`}),(0,b.jsxs)(`p`,{className:`truncate text-13 text-muted-foreground`,children:[r,c.length>0?(0,b.jsxs)(`span`,{className:`tabular-nums`,children:[` · `,c.length,` boards`]}):null]})]}),c.length>0?(0,b.jsxs)(n,{size:`sm`,onClick:_,children:[(0,b.jsx)(s,{className:`size-3.5`}),`New board`]}):null]}),h?(0,b.jsx)(`p`,{className:`border-b border-border px-6 py-2 text-13 text-destructive-text`,children:h}):null,(0,b.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[j?(0,b.jsx)(T,{templates:l,firstRun:c.length===0,onPick:k,onCancel:x}):null,c.length>0?(0,b.jsx)(`ul`,{className:`px-4 py-1`,children:c.map(e=>(0,b.jsx)(S,{board:e,renaming:d===e.id,onOpen:a,onStartRename:C,onRename:A,onCancelRename:w,onCommand:O},e.id))}):null]})]})}function S({board:e,renaming:t,onOpen:n,onStartRename:r,onRename:i,onCancelRename:a,onCommand:o}){let s=(0,g.useCallback)(()=>n(e.id),[e.id,n]),l=(0,g.useCallback)(t=>{t.key===`Enter`&&i(e.id,t.currentTarget.value),t.key===`Escape`&&a()},[e.id,a,i]),u=(0,g.useCallback)(t=>i(e.id,t.currentTarget.value),[e.id,i]);return(0,b.jsxs)(`li`,{className:`group grid grid-cols-[1fr_auto_auto] items-center gap-5 border-b border-border px-3 py-3 last:border-b-0 hover:bg-secondary`,children:[(0,b.jsx)(`div`,{className:`min-w-0`,children:t?(0,b.jsx)(c,{autoFocus:!0,defaultValue:e.title,onKeyDown:l,onBlur:u,className:`h-7 max-w-sm`,"aria-label":`Board name`}):(0,b.jsxs)(`button`,{type:`button`,onClick:s,className:`block w-full text-left`,children:[(0,b.jsx)(`span`,{className:`block truncate text-15 font-semibold tracking-[-0.005em] text-foreground`,children:e.title}),e.description?(0,b.jsx)(`span`,{className:`mt-0.5 block truncate text-13 text-muted-foreground`,children:e.description}):null]})}),(0,b.jsxs)(`div`,{className:`flex items-center gap-4 text-xs text-muted-foreground`,children:[(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.columnCount}),` columns`]}),(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.cardCount}),` cards`]})]}),(0,b.jsx)(C,{board:e,onStartRename:r,onCommand:o})]})}function C({board:e,onStartRename:t,onCommand:n}){let r=v(t=>t.openMenuId===e.id),{openMenu:i,closeMenu:a}=v.getState(),s=(0,g.useCallback)(t=>{t?i(e.id):a()},[e.id,a,i]),c=(0,g.useCallback)(()=>{a(),t(e.id)},[e.id,a,t]),f=(0,g.useCallback)(()=>{a(),n({type:`board.duplicate`,boardId:e.id,title:`${e.title} copy`})},[e.id,e.title,a,n]),p=(0,g.useCallback)(()=>{a(),n({type:`board.saveAsTemplate`,boardId:e.id,name:e.title})},[e.id,e.title,a,n]),m=(0,g.useCallback)(()=>{a(),n({type:`board.archive`,boardId:e.id})},[e.id,a,n]);return(0,b.jsxs)(d,{open:r,onOpenChange:s,children:[(0,b.jsx)(u,{asChild:!0,children:(0,b.jsx)(`button`,{type:`button`,"aria-label":`Actions for ${e.title}`,className:`rounded-md px-1.5 py-1 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 data-[state=open]:opacity-100`,children:(0,b.jsx)(o,{className:`size-4`})})}),(0,b.jsxs)(l,{align:`end`,className:`w-56 p-1`,children:[(0,b.jsx)(w,{onClick:c,children:`Rename`}),(0,b.jsx)(w,{onClick:f,children:`Duplicate structure`}),(0,b.jsx)(w,{onClick:p,children:`Save as template`}),(0,b.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,b.jsx)(w,{onClick:m,tone:`destructive`,children:`Archive`})]})]})}function w({onClick:e,children:t,tone:n}){return(0,b.jsx)(`button`,{type:`button`,onClick:e,className:i(`flex w-full items-center rounded-sm px-2 py-1.5 text-left text-xs font-medium hover:bg-secondary`,n===`destructive`&&`text-destructive-text`),children:t})}function T({templates:e,firstRun:t,onPick:r,onCancel:i}){let a=(0,g.useCallback)(()=>r(null),[r]);return(0,b.jsxs)(`div`,{className:`px-6 py-8`,children:[t?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`No boards yet.`}),(0,b.jsx)(`p`,{className:`mt-1 max-w-[58ch] text-sm text-muted-foreground`,children:`A board turns issues into work your agents can pick up. Start from a shape, or import an existing tracker.`})]}):(0,b.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`Start from a shape`}),(0,b.jsxs)(`div`,{className:`mt-4 max-w-xl rounded-lg border border-border`,children:[e.map(e=>(0,b.jsx)(E,{template:e,onPick:r},e.id)),(0,b.jsx)(`button`,{type:`button`,onClick:a,className:`flex w-full items-center border-t border-border px-3.5 py-2.5 text-left hover:bg-secondary`,children:(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:`Empty board`}),(0,b.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:`Name your own columns`})]})})]}),t?null:(0,b.jsx)(n,{variant:`ghost`,size:`sm`,className:`mt-3`,onClick:i,children:`Cancel`})]})}function E({template:e,onPick:t}){let n=(0,g.useCallback)(()=>t(e),[t,e]),r=e.definition.columns;return(0,b.jsxs)(`button`,{type:`button`,onClick:n,className:`flex w-full items-center gap-3 border-b border-border px-3.5 py-2.5 text-left last:border-b-0 hover:bg-secondary`,children:[(0,b.jsxs)(`span`,{className:`min-w-0`,children:[(0,b.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:e.name}),(0,b.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:r.map(e=>e.title).join(` · `)})]}),(0,b.jsx)(`span`,{"aria-hidden":!0,className:`ml-auto flex shrink-0 gap-1`,children:r.map((t,n)=>(0,b.jsx)(`span`,{className:i(`size-1.5 rounded-full`,t.colorToken?h[t.colorToken]:`bg-muted-icon`)},`${e.id}-${String(n)}`))})]})}export{x as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{G as n,U as r,W as i}from"./chatFocusPolicy-BmePbD4q.js";import{t as a}from"./jsx-runtime-DREnUpxT.js";import{o}from"./formatters-wSVyvDFZ.js";import{t as s}from"./BoardsPage-Cel47J2v.js";var c=e(t(),1),l=e(a(),1);function u(){let e=i(),t=r(),{projectId:a=``}=n(),u=[...e.sidebarData.starredProjectGroups,...e.sidebarData.projectGroups].find(e=>e.groupKey===a),d=u?o(u.localPath):`Project`,f=(0,c.useCallback)(e=>{t(`/boards/${a}/${e}`)},[t,a]);return(0,l.jsx)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 flex-col`,children:(0,l.jsx)(s,{ownerKind:`project`,ownerId:a,ownerName:d,socket:e.socket,onOpenBoard:f})})}export{u as BoardsRoutePage};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{G as n,U as r,W as i}from"./chatFocusPolicy-D5WAGQzz.js";import{t as a}from"./jsx-runtime-DREnUpxT.js";import{o}from"./formatters-wSVyvDFZ.js";import{t as s}from"./BoardsPage-C3FpHO5c.js";var c=e(t(),1),l=e(a(),1);function u(){let e=i(),t=r(),{projectId:a=``}=n(),u=[...e.sidebarData.starredProjectGroups,...e.sidebarData.projectGroups].find(e=>e.groupKey===a),d=u?o(u.localPath):`Project`,f=(0,c.useCallback)(e=>{t(`/boards/${a}/${e}`)},[t,a]);return(0,l.jsx)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 flex-col`,children:(0,l.jsx)(s,{ownerKind:`project`,ownerId:a,ownerName:d,socket:e.socket,onOpenBoard:f})})}export{u as BoardsRoutePage};