dmux 3.3.0 → 3.4.3

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 (132) hide show
  1. package/dist/DmuxApp.d.ts.map +1 -1
  2. package/dist/DmuxApp.js +51 -12
  3. package/dist/DmuxApp.js.map +1 -1
  4. package/dist/actions/implementations/closeAction.d.ts.map +1 -1
  5. package/dist/actions/implementations/closeAction.js +24 -4
  6. package/dist/actions/implementations/closeAction.js.map +1 -1
  7. package/dist/actions/merge/commitMessageHandler.d.ts.map +1 -1
  8. package/dist/actions/merge/commitMessageHandler.js +0 -8
  9. package/dist/actions/merge/commitMessageHandler.js.map +1 -1
  10. package/dist/actions/merge/mergeExecution.d.ts.map +1 -1
  11. package/dist/actions/merge/mergeExecution.js +5 -1
  12. package/dist/actions/merge/mergeExecution.js.map +1 -1
  13. package/dist/chunks/styles.css_vue_type_style_index_0_src_true_lang-pW5mq51o.js +17 -0
  14. package/dist/components/popups/logsPopup.js +35 -19
  15. package/dist/components/popups/logsPopup.js.map +1 -1
  16. package/dist/components/ui/FooterHelp.d.ts +4 -0
  17. package/dist/components/ui/FooterHelp.d.ts.map +1 -1
  18. package/dist/components/ui/FooterHelp.js +45 -1
  19. package/dist/components/ui/FooterHelp.js.map +1 -1
  20. package/dist/components/ui/ToastNotification.d.ts +13 -0
  21. package/dist/components/ui/ToastNotification.d.ts.map +1 -0
  22. package/dist/components/ui/ToastNotification.js +22 -0
  23. package/dist/components/ui/ToastNotification.js.map +1 -0
  24. package/dist/dashboard.html +2 -2
  25. package/dist/dashboard.js +2 -2
  26. package/dist/hooks/useActionSystem.d.ts.map +1 -1
  27. package/dist/hooks/useActionSystem.js +8 -23
  28. package/dist/hooks/useActionSystem.js.map +1 -1
  29. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  30. package/dist/hooks/useInputHandling.js +16 -2
  31. package/dist/hooks/useInputHandling.js.map +1 -1
  32. package/dist/hooks/useLayoutManagement.d.ts.map +1 -1
  33. package/dist/hooks/useLayoutManagement.js +46 -12
  34. package/dist/hooks/useLayoutManagement.js.map +1 -1
  35. package/dist/hooks/usePaneLoading.d.ts +3 -0
  36. package/dist/hooks/usePaneLoading.d.ts.map +1 -1
  37. package/dist/hooks/usePaneLoading.js +48 -8
  38. package/dist/hooks/usePaneLoading.js.map +1 -1
  39. package/dist/hooks/usePaneSync.d.ts +3 -0
  40. package/dist/hooks/usePaneSync.d.ts.map +1 -1
  41. package/dist/hooks/usePaneSync.js +18 -3
  42. package/dist/hooks/usePaneSync.js.map +1 -1
  43. package/dist/hooks/usePanes.js +16 -4
  44. package/dist/hooks/usePanes.js.map +1 -1
  45. package/dist/hooks/useShellDetection.js +20 -6
  46. package/dist/hooks/useShellDetection.js.map +1 -1
  47. package/dist/index.js +58 -46
  48. package/dist/index.js.map +1 -1
  49. package/dist/layout/LayoutCalculator.d.ts.map +1 -1
  50. package/dist/layout/LayoutCalculator.js +0 -3
  51. package/dist/layout/LayoutCalculator.js.map +1 -1
  52. package/dist/layout/SpacerManager.js +15 -7
  53. package/dist/layout/SpacerManager.js.map +1 -1
  54. package/dist/layout/TmuxLayoutApplier.d.ts +4 -1
  55. package/dist/layout/TmuxLayoutApplier.d.ts.map +1 -1
  56. package/dist/layout/TmuxLayoutApplier.js +28 -21
  57. package/dist/layout/TmuxLayoutApplier.js.map +1 -1
  58. package/dist/server/embedded-assets.d.ts.map +1 -1
  59. package/dist/server/embedded-assets.js +137 -97
  60. package/dist/server/embedded-assets.js.map +1 -1
  61. package/dist/server/routes/keysRoutes.d.ts +15 -2
  62. package/dist/server/routes/keysRoutes.d.ts.map +1 -1
  63. package/dist/server/routes/keysRoutes.js +18 -1
  64. package/dist/server/routes/keysRoutes.js.map +1 -1
  65. package/dist/services/AutoUpdater.d.ts.map +1 -1
  66. package/dist/services/AutoUpdater.js +2 -1
  67. package/dist/services/AutoUpdater.js.map +1 -1
  68. package/dist/services/PaneAnalyzer.d.ts +12 -3
  69. package/dist/services/PaneAnalyzer.d.ts.map +1 -1
  70. package/dist/services/PaneAnalyzer.js +57 -8
  71. package/dist/services/PaneAnalyzer.js.map +1 -1
  72. package/dist/services/PopupManager.d.ts.map +1 -1
  73. package/dist/services/PopupManager.js +7 -1
  74. package/dist/services/PopupManager.js.map +1 -1
  75. package/dist/services/StatusDetector.d.ts.map +1 -1
  76. package/dist/services/StatusDetector.js +31 -14
  77. package/dist/services/StatusDetector.js.map +1 -1
  78. package/dist/services/TmuxService.d.ts +57 -3
  79. package/dist/services/TmuxService.d.ts.map +1 -1
  80. package/dist/services/TmuxService.js +97 -7
  81. package/dist/services/TmuxService.js.map +1 -1
  82. package/dist/services/ToastService.d.ts +71 -0
  83. package/dist/services/ToastService.d.ts.map +1 -0
  84. package/dist/services/ToastService.js +151 -0
  85. package/dist/services/ToastService.js.map +1 -0
  86. package/dist/shared/StateManager.d.ts +22 -0
  87. package/dist/shared/StateManager.d.ts.map +1 -1
  88. package/dist/shared/StateManager.js +68 -1
  89. package/dist/shared/StateManager.js.map +1 -1
  90. package/dist/terminal.html +2 -2
  91. package/dist/terminal.js +3 -3
  92. package/dist/types.d.ts +3 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/utils/asciiArt.js +3 -3
  95. package/dist/utils/asciiArt.js.map +1 -1
  96. package/dist/utils/atomicWrite.d.ts +33 -0
  97. package/dist/utils/atomicWrite.d.ts.map +1 -0
  98. package/dist/utils/atomicWrite.js +89 -0
  99. package/dist/utils/atomicWrite.js.map +1 -0
  100. package/dist/utils/errorHandling.js +34 -8
  101. package/dist/utils/errorHandling.js.map +1 -1
  102. package/dist/utils/generated-agents-doc.d.ts +1 -1
  103. package/dist/utils/generated-agents-doc.js +1 -1
  104. package/dist/utils/hooksDocs.d.ts +1 -1
  105. package/dist/utils/layoutManager.d.ts.map +1 -1
  106. package/dist/utils/layoutManager.js +223 -169
  107. package/dist/utils/layoutManager.js.map +1 -1
  108. package/dist/utils/mergeValidation.d.ts.map +1 -1
  109. package/dist/utils/mergeValidation.js +5 -1
  110. package/dist/utils/mergeValidation.js.map +1 -1
  111. package/dist/utils/paneCreation.d.ts.map +1 -1
  112. package/dist/utils/paneCreation.js +5 -4
  113. package/dist/utils/paneCreation.js.map +1 -1
  114. package/dist/utils/paneRebinding.js +4 -2
  115. package/dist/utils/paneRebinding.js.map +1 -1
  116. package/dist/utils/postPaneCleanup.d.ts.map +1 -1
  117. package/dist/utils/postPaneCleanup.js +1 -11
  118. package/dist/utils/postPaneCleanup.js.map +1 -1
  119. package/dist/utils/shellPaneDetection.js +33 -23
  120. package/dist/utils/shellPaneDetection.js.map +1 -1
  121. package/dist/utils/tmux.d.ts.map +1 -1
  122. package/dist/utils/tmux.js +19 -13
  123. package/dist/utils/tmux.js.map +1 -1
  124. package/dist/utils/welcomePane.d.ts.map +1 -1
  125. package/dist/utils/welcomePane.js +1 -7
  126. package/dist/utils/welcomePane.js.map +1 -1
  127. package/dist/utils/welcomePaneManager.d.ts.map +1 -1
  128. package/dist/utils/welcomePaneManager.js +10 -24
  129. package/dist/utils/welcomePaneManager.js.map +1 -1
  130. package/package.json +7 -7
  131. package/dist/chunks/_plugin-vue_export-helper-Cvoq67hi.js +0 -28
  132. /package/dist/{_plugin-vue_export-helper.css → styles.css} +0 -0
package/dist/dashboard.js CHANGED
@@ -1,2 +1,2 @@
1
- import{d as Mt,r as u,o as zt,a as Nt,n as I,_ as Ht,c as n,b as t,t as g,e as r,f as Ot,g as P,F as y,h as w,w as M,i as at,v as it,j as lt,k as a,l as z,m as Ft}from"./chunks/_plugin-vue_export-helper-Cvoq67hi.js";const Et=Mt({__name:"Dashboard",setup(vt,{expose:i}){i();const U=u("Loading..."),e=u(""),O=u(!1),F=u([]),o=u(null),p=u("Never"),h=u({}),f=u(new Set),J=u({}),x=u(localStorage.getItem("dmux-theme")||"dark"),A=u(new Set),b=u(new Set),K=u(!1),T=u(""),C=u(null),Q=u(!1),E=u([]),L=u(!1),j=u("prompt"),pt=u([]),W=u({}),S=u(null),k=u(null),R=u(!1),D=u(!1),Z=u(!1),V=u(null),G=u([]),N=u(!1),H=u(!1),q=u([]),X=u(!1);let _=null;const Y=()=>{_&&clearInterval(_),ot(),_=setInterval(()=>{ot()},2e3)},$=()=>{_&&(clearInterval(_),_=null)},ht=()=>{x.value=x.value==="dark"?"light":"dark",localStorage.setItem("dmux-theme",x.value),document.documentElement.setAttribute("data-theme",x.value)},mt=s=>{A.value.has(s)?A.value.delete(s):A.value.add(s),A.value=new Set(A.value)},yt=()=>{K.value=!0,T.value="",C.value=null,E.value=[],L.value=!1,j.value="prompt",I(()=>{const l=document.getElementById("pane-prompt");l&&l.focus()});const s=l=>{l.key==="Escape"&&(tt(),document.removeEventListener("keydown",s))};document.addEventListener("keydown",s)},tt=()=>{K.value=!1,T.value="",C.value=null,E.value=[],L.value=!1,j.value="prompt"},et=async()=>{if(!(j.value==="prompt"&&!T.value.trim())&&!(j.value==="agent"&&!C.value))try{Q.value=!0;const s={prompt:T.value.trim()};C.value&&(s.agent=C.value);const d=await(await fetch("/api/panes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})).json();d.needsAgentChoice?(L.value=!0,E.value=d.availableAgents,j.value="agent"):tt()}catch(s){console.error("Failed to create pane:",s),alert("Failed to create pane")}finally{Q.value=!1}},kt=s=>{C.value=s,et()},ct=s=>{U.value=s.projectName||"dmux",e.value=s.sessionName||"",O.value=!0,F.value=s.panes||[],o.value=new Date,p.value="Just now";for(const l of F.value)W.value[l.id]||dt(l.id)},ot=async()=>{try{const l=await(await fetch("/api/panes")).json();ct(l)}catch(s){console.error("Failed to fetch panes:",s),O.value=!1}},dt=async s=>{try{const d=await(await fetch(`/api/panes/${s}/actions`)).json();W.value[s]=d.actions||[]}catch(l){console.error(`Failed to fetch actions for pane ${s}:`,l)}},ft=s=>{S.value===s?S.value=null:S.value=s},bt=async(s,l)=>{var d;try{R.value=!0,S.value=null;const v=await(await fetch(`/api/panes/${s.id}/actions/${l.id}`,{method:"POST"})).json();if(v.requiresInteraction){let m={};v.interactionType==="confirm"?m={type:"confirm",title:v.title||"Confirm",message:v.message,...v.confirmData}:v.interactionType==="choice"?m={type:"choice",title:v.title||"Choose",message:v.message,...v.choiceData}:v.interactionType==="input"&&(m={type:"input",title:v.title||"Input",message:v.message,...v.inputData,inputValue:((d=v.inputData)==null?void 0:d.defaultValue)||""},I(()=>{const nt=document.querySelector(".dialog-input");nt&&(nt.focus(),nt.select())})),m.paneId=s.id,k.value=m}}catch(c){console.error("Failed to execute action:",c),alert("Failed to execute action")}finally{R.value=!1}},B=()=>{k.value=null},_t=async s=>{var l;if(k.value)try{D.value=!0;const c=await(await fetch(`/api/callbacks/confirm/${k.value.callbackId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({confirmed:s})})).json();if(c.requiresInteraction){let v={};c.interactionType==="confirm"?v={type:"confirm",title:c.title||"Confirm",message:c.message,...c.confirmData}:c.interactionType==="choice"?v={type:"choice",title:c.title||"Choose",message:c.message,...c.choiceData}:c.interactionType==="input"&&(v={type:"input",title:c.title||"Input",message:c.message,...c.inputData,inputValue:((l=c.inputData)==null?void 0:l.defaultValue)||""},I(()=>{const m=document.querySelector(".dialog-input");m&&(m.focus(),m.select())})),k.value=v}else B()}catch(d){console.error("Failed to confirm action:",d),alert("Failed to complete action")}finally{D.value=!1}},wt=async s=>{var l;if(k.value)try{D.value=!0;const c=await(await fetch(`/api/callbacks/choice/${k.value.callbackId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({optionId:s})})).json();if(c.requiresInteraction){let v={};c.interactionType==="confirm"?v={type:"confirm",title:c.title||"Confirm",message:c.message,...c.confirmData}:c.interactionType==="choice"?v={type:"choice",title:c.title||"Choose",message:c.message,...c.choiceData}:c.interactionType==="input"&&(v={type:"input",title:c.title||"Input",message:c.message,...c.inputData,inputValue:((l=c.inputData)==null?void 0:l.defaultValue)||""},I(()=>{const m=document.querySelector(".dialog-input");m&&(m.focus(),m.select())})),k.value=v}else B()}catch(d){console.error("Failed to select choice:",d),alert("Failed to complete action")}finally{D.value=!1}},Ct=s=>s.split(`
2
- `).map(l=>{if(l.includes("|")){const d=l.split("|");if(d.length===2){const c=d[0],m=d[1].replace(/\+/g,'<span style="color: #4ade80;">+</span>').replace(/-/g,'<span style="color: #f87171;">-</span>');return c+'<span style="opacity: 0.6;">|</span>'+m}}return l}).join("<br>"),St=async()=>{var s;if(k.value)try{D.value=!0;const d=await(await fetch(`/api/callbacks/input/${k.value.callbackId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:k.value.inputValue})})).json();if(d.requiresInteraction){let c={};d.interactionType==="confirm"?c={type:"confirm",title:d.title||"Confirm",message:d.message,...d.confirmData}:d.interactionType==="choice"?c={type:"choice",title:d.title||"Choose",message:d.message,...d.choiceData}:d.interactionType==="input"&&(c={type:"input",title:d.title||"Input",message:d.message,...d.inputData,inputValue:((s=d.inputData)==null?void 0:s.defaultValue)||""},I(()=>{const v=document.querySelector(".dialog-input");v&&(v.focus(),v.select())})),k.value=c}else B()}catch(l){console.error("Failed to submit input:",l),alert("Failed to complete action")}finally{D.value=!1}},Dt=async(s,l)=>{try{b.value.add(s.id),b.value=new Set(b.value);const d=l.keys||[l.action];for(const c of d)await fetch(`/api/keys/${s.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})});setTimeout(()=>{b.value.delete(s.id),b.value=new Set(b.value)},1500)}catch(d){console.error("Failed to select option:",d),b.value.delete(s.id),b.value=new Set(b.value)}},Pt=async s=>{const l=h.value[s.id];if(!(!l||!l.trim()))try{f.value.add(s.id),f.value=new Set(f.value);for(const d of l)await fetch(`/api/keys/${s.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:d})});await fetch(`/api/keys/${s.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:"Enter"})}),J.value[s.id]=l.substring(0,50)+(l.length>50?"...":""),h.value[s.id]="",setTimeout(()=>{delete J.value[s.id],f.value.delete(s.id),f.value=new Set(f.value)},3e3)}catch(d){console.error("Failed to send prompt:",d),f.value.delete(s.id),f.value=new Set(f.value)}},xt=s=>{const l=s.target;l.style.height="auto",l.style.height=l.scrollHeight+"px"},At=async()=>{try{N.value=!0;const l=await(await fetch("/api/settings")).json();V.value=l.settings,G.value=l.definitions,Z.value=!0,H.value=!1}catch(s){console.error("Failed to load settings:",s),alert("Failed to load settings")}finally{N.value=!1}},rt=()=>{Z.value=!1,V.value=null,G.value=[],H.value=!1,q.value=[]},Tt=async(s,l,d)=>{try{N.value=!0,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:s,value:l,scope:d})});const v=await(await fetch("/api/settings")).json();V.value=v.settings}catch(c){console.error("Failed to update setting:",c),alert("Failed to update setting")}finally{N.value=!1}},jt=async()=>{try{X.value=!0;const l=await(await fetch("/api/hooks")).json();q.value=l.hooks||[],H.value=!0}catch(s){console.error("Failed to load hooks:",s),alert("Failed to load hooks")}finally{X.value=!1}},gt=()=>{H.value=!1,q.value=[]},It=async()=>{const s="I would like to edit my dmux hooks in .dmux-hooks, please read the instructions in there and ask me what I want to edit";gt(),rt(),T.value=s,await I(),await et()},st=s=>{const l=s.target;S.value&&!l.closest(".action-menu-btn")&&!l.closest(".action-menu-dropdown")&&(S.value=null)};zt(()=>{document.documentElement.setAttribute("data-theme",x.value),Y(),document.addEventListener("click",st),document.addEventListener("visibilitychange",()=>{document.hidden?$():Y()})}),Nt(()=>{$(),document.removeEventListener("click",st)});const ut={projectName:U,sessionName:e,connected:O,panes:F,lastUpdate:o,timeSinceUpdate:p,promptInputs:h,sendingPrompts:f,queuedMessages:J,theme:x,expandedPrompts:A,loadingOptions:b,showCreateDialog:K,newPanePrompt:T,newPaneAgent:C,creatingPane:Q,availableAgents:E,needsAgentChoice:L,createStep:j,actions:pt,paneActions:W,showActionMenu:S,actionDialog:k,executingAction:R,actionDialogLoading:D,showSettingsDialog:Z,settingsData:V,settingDefinitions:G,loadingSettings:N,showHooksSection:H,hooksData:q,loadingHooks:X,get pollingInterval(){return _},set pollingInterval(s){_=s},startPolling:Y,stopPolling:$,toggleTheme:ht,togglePrompt:mt,openCreateDialog:yt,closeCreateDialog:tt,createPane:et,selectAgent:kt,updatePanesFromData:ct,fetchPanes:ot,fetchPaneActions:dt,toggleActionMenu:ft,executeAction:bt,closeActionDialog:B,confirmAction:_t,selectChoice:wt,colorizeDiffStat:Ct,submitInput:St,selectOption:Dt,sendPrompt:Pt,autoExpand:xt,openSettingsDialog:At,closeSettingsDialog:rt,updateSetting:Tt,openHooksSection:jt,closeHooksSection:gt,editHooksWithAgent:It,handleClickOutside:st};return Object.defineProperty(ut,"__isScriptSetup",{enumerable:!1,value:!0}),ut}}),Lt={class:"session-info"},Vt=["title"],qt={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Bt={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Ut={key:0},Jt={class:"container"},Kt={class:"actions-bar"},Qt=["disabled"],Wt=["disabled"],Rt={key:0,class:"no-panes"},Zt={key:1,class:"panes-grid"},Gt={class:"pane-header"},Xt={class:"pane-header-content"},Yt=["href"],$t={class:"pane-title"},te={class:"pane-meta"},ee={key:0,class:"pane-autopilot",title:"Autopilot enabled"},oe={key:1,class:"pane-agent shell",title:"Shell pane"},se={class:"pane-id"},ne=["onClick"],ae={key:0,class:"action-menu-dropdown"},ie=["onClick","disabled"],le={class:"action-icon"},ce={class:"action-label"},de={class:"pane-prompt-section"},re=["onClick"],ge={class:"prompt-header"},ue={class:"expand-icon"},ve={class:"prompt-text"},pe={key:0,class:"pane-prompt-full"},he={key:1,class:"agent-summary"},me={key:2,class:"analyzer-error"},ye={key:0,class:"options-dialog"},ke={class:"options-question"},fe={key:0,class:"options-warning"},be={key:1,class:"analyzing-state"},_e={key:2,class:"options-buttons"},we=["onClick","disabled"],Ce={class:"prompt-input-wrapper"},Se=["onUpdate:modelValue","placeholder","disabled"],De=["onClick","disabled","title"],Pe={key:0,class:"button-loader"},xe={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 988.44 1200.05"},Ae={key:0,class:"queued-message"},Te={key:3,class:"dev-server-status"},je=["href"],Ie={class:"action-dialog"},Me={key:0},ze=["onKeydown"],Ne={class:"dialog-buttons"},He=["disabled"],Oe={key:1},Fe={class:"agent-choices"},Ee=["onClick","disabled"],Le={key:0,class:"action-dialog"},Ve={key:0,class:"dialog-loading"},qe={key:1,class:"dialog-buttons"},Be=["disabled"],Ue=["disabled"],Je={class:"action-dialog"},Ke={key:0},Qe={key:1,class:"dialog-loading"},We={key:2},Re={class:"choice-options"},Ze=["onClick","disabled"],Ge={class:"choice-label"},Xe={key:0,class:"choice-description"},Ye={class:"dialog-buttons"},$e=["disabled"],to={class:"action-dialog"},eo=["innerHTML"],oo={key:1,class:"dialog-loading"},so={key:2},no=["placeholder"],ao={class:"dialog-buttons"},io=["disabled"],lo=["disabled"],co={class:"action-dialog settings-dialog"},ro={key:0,class:"dialog-loading"},go={key:1,class:"settings-list"},uo={class:"setting-header"},vo={class:"setting-info"},po={class:"setting-label"},ho={class:"setting-description"},mo={key:0,class:"setting-control"},yo={class:"setting-value"},ko={key:0,class:"setting-scope"},fo={key:1,class:"setting-scope"},bo={class:"setting-buttons"},_o=["onClick","disabled"],wo=["onClick","disabled"],Co=["onClick","disabled"],So=["onClick","disabled"],Do={class:"setting-control"},Po={class:"setting-value"},xo={key:0,class:"setting-scope"},Ao={key:1,class:"setting-scope"},To={class:"setting-option-label"},jo={class:"setting-buttons"},Io=["onClick","disabled"],Mo=["onClick","disabled"],zo={class:"setting-control"},No={class:"setting-buttons"},Ho=["disabled"],Oo={key:2,class:"hooks-section"},Fo={key:0,class:"dialog-loading"},Eo={key:1,class:"hooks-list"},Lo={class:"hook-name"};function Vo(vt,i,U,e,O,F){return a(),n(y,null,[t("header",null,[i[7]||(i[7]=t("img",{src:"https://cdn.formk.it/dmux/dmux.png",alt:"dmux",class:"logo"},null,-1)),t("h1",null,g(e.projectName),1),t("div",Lt,[t("button",{onClick:e.toggleTheme,class:"theme-toggle",title:e.theme==="dark"?"Switch to light mode":"Switch to dark mode"},[e.theme==="dark"?(a(),n("svg",qt,[...i[5]||(i[5]=[t("path",{d:"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z"},null,-1)])])):(a(),n("svg",Bt,[...i[6]||(i[6]=[t("path",{d:"M9.528 1.718a.75.75 0 01.162.819A8.97 8.97 0 009 6.5a9 9 0 009 9 8.97 8.97 0 003.963-.69.75.75 0 01.981.98 10.503 10.503 0 01-9.694 6.46c-5.799 0-10.5-4.701-10.5-10.5 0-4.368 2.667-8.112 6.46-9.694a.75.75 0 01.818.162z"},null,-1)])]))],8,Vt),e.sessionName?(a(),n("span",Ut,g(e.sessionName),1)):r("v-if",!0),t("span",{class:"status-indicator",style:Ot({color:e.connected?"#4ade80":"#f87171"})},"●",4)])]),t("div",Jt,[t("main",null,[t("div",Kt,[t("button",{onClick:e.openCreateDialog,class:"create-pane-button",disabled:e.creatingPane},[...i[8]||(i[8]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M12 4.5v15m7.5-7.5h-15",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1),P(" Create New Pane ",-1)])],8,Qt),t("button",{onClick:e.openSettingsDialog,class:"settings-button",disabled:e.loadingSettings,title:"Settings"},[...i[9]||(i[9]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M10.5 1.875a1.125 1.125 0 012.25 0v.563c0 1.018.84 1.843 1.854 1.839a.75.75 0 01.585.217l.4.4a.75.75 0 01.216.585c-.004 1.014.821 1.854 1.839 1.854h.563a1.125 1.125 0 010 2.25h-.563c-1.018 0-1.843.84-1.839 1.854a.75.75 0 01-.217.585l-.4.4a.75.75 0 01-.585.216c-1.014-.004-1.854.821-1.854 1.839v.563a1.125 1.125 0 01-2.25 0v-.563c0-1.018-.84-1.843-1.854-1.839a.75.75 0 01-.585-.217l-.4-.4a.75.75 0 01-.216-.585c.004-1.014-.821-1.854-1.839-1.854H3.75a1.125 1.125 0 010-2.25h.563c1.018 0 1.843-.84 1.839-1.854a.75.75 0 01.217-.585l.4-.4a.75.75 0 01.585-.216c1.014.004 1.854-.821 1.854-1.839V1.875zM12 15a3 3 0 100-6 3 3 0 000 6z"})],-1),P(" Settings ",-1)])],8,Wt)]),e.panes.length===0?(a(),n("div",Rt,[...i[10]||(i[10]=[t("p",null,"No dmux panes active",-1),t("p",{class:"hint"},`Click "Create New Pane" above or press 'n' in dmux`,-1)])])):(a(),n("div",Zt,[(a(!0),n(y,null,w(e.panes,o=>(a(),n("div",{key:o.id,class:"pane-card"},[t("div",Gt,[t("div",Xt,[t("a",{href:"/panes/"+o.id,class:"pane-title-link"},[t("span",$t,g(o.slug),1),i[11]||(i[11]=t("span",{class:"pane-arrow"},"→",-1))],8,Yt),t("div",te,[o.autopilot?(a(),n("span",ee,"🤖")):r("v-if",!0),o.type==="shell"?(a(),n("span",oe,g(o.shellType||"shell"),1)):(a(),n("span",{key:2,class:z(["pane-agent",o.agent||""])},g(o.agent||"unknown"),3)),t("span",se,g(o.paneId),1)])]),t("button",{onClick:p=>e.toggleActionMenu(o.id),class:"action-menu-btn",title:"Actions"},[...i[12]||(i[12]=[t("span",null,"⋮",-1)])],8,ne)]),r(" Action Menu Dropdown "),e.showActionMenu===o.id&&e.paneActions[o.id]?(a(),n("div",ae,[(a(!0),n(y,null,w(e.paneActions[o.id],p=>(a(),n("button",{key:p.id,onClick:h=>e.executeAction(o,p),class:"action-menu-item",disabled:e.executingAction},[t("span",le,g(p.icon||"•"),1),t("span",ce,g(p.label),1)],8,ie))),128))])):r("v-if",!0),t("div",de,[t("div",{class:z(["pane-prompt-preview",{expanded:e.expandedPrompts.has(o.id)}]),onClick:p=>e.togglePrompt(o.id)},[t("div",ge,[i[13]||(i[13]=t("span",{class:"prompt-label"},"Initial Prompt",-1)),t("span",ue,g(e.expandedPrompts.has(o.id)?"▼":"▶"),1)]),t("span",ve,g(o.prompt||"No prompt"),1)],10,re),e.expandedPrompts.has(o.id)?(a(),n("div",pe,g(o.prompt||"No prompt"),1)):r("v-if",!0)]),r(" Show agent summary when idle "),o.agentStatus==="idle"&&o.agentSummary?(a(),n("div",he,g(o.agentSummary),1)):r("v-if",!0),r(" Show analyzer error if present "),o.analyzerError?(a(),n("div",me," ⚠ "+g(o.analyzerError),1)):r("v-if",!0),t("div",{class:"pane-interactive",onClick:i[0]||(i[0]=M(()=>{},["prevent"]))},[r(" Options Dialog (when waiting with options) "),o.agentStatus==="waiting"&&o.options&&o.options.length>0?(a(),n("div",ye,[t("div",ke,g(o.optionsQuestion||"Choose an option:"),1),o.potentialHarm&&o.potentialHarm.hasRisk?(a(),n("div",fe," ⚠️ "+g(o.potentialHarm.description),1)):r("v-if",!0),e.loadingOptions.has(o.id)?(a(),n("div",be,[...i[14]||(i[14]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Processing selection...",-1)])])):(a(),n("div",_e,[(a(!0),n(y,null,w(o.options,p=>(a(),n("button",{key:p.action,onClick:h=>e.selectOption(o,p),class:z(["option-button",{"option-button-danger":o.potentialHarm&&o.potentialHarm.hasRisk}]),disabled:e.loadingOptions.has(o.id)},g(p.action),11,we))),128))]))])):o.agentStatus==="analyzing"?(a(),n(y,{key:1},[r(" Analyzing (show loader) "),i[15]||(i[15]=t("div",{class:"analyzing-state"},[t("div",{class:"loader-spinner"}),t("span",null,"Analyzing...")],-1))],2112)):(a(),n(y,{key:2},[r(" Working/Idle (show prompt input) "),t("div",null,[t("div",Ce,[at(t("textarea",{"onUpdate:modelValue":p=>e.promptInputs[o.id]=p,onInput:e.autoExpand,placeholder:o.agentStatus==="working"?"Queue a prompt...":"Send a prompt...",disabled:e.sendingPrompts.has(o.id),class:"prompt-textarea",rows:"1"},null,40,Se),[[it,e.promptInputs[o.id]]]),t("button",{onClick:p=>e.sendPrompt(o),disabled:!e.promptInputs[o.id]||e.sendingPrompts.has(o.id),class:"send-button",title:o.agentStatus==="working"?"Queue prompt":"Send prompt"},[e.sendingPrompts.has(o.id)?(a(),n("span",Pe)):(a(),n("svg",xe,[...i[16]||(i[16]=[t("path",{d:"M425.13,28.37L30.09,423.41C11.19,441.37.34,466.2,0,492.27c-.34,26.07,9.86,51.17,28.29,69.61,18.43,18.45,43.52,28.67,69.59,28.35,26.07-.31,50.91-11.14,68.88-30.02l233.16-233.52v776.64c0,34.56,18.43,66.48,48.36,83.76,29.93,17.28,66.8,17.28,96.72,0,29.93-17.28,48.36-49.21,48.36-83.76V328.85l231.72,231.36c24.63,23.41,59.74,32.18,92.48,23.09,32.74-9.08,58.32-34.68,67.38-67.43,9.05-32.75.25-67.85-23.18-92.46L566.73,28.37C548.63,10.16,524-.04,498.33.05c-.8-.06-1.6-.06-2.4,0-.8-.06-1.6-.06-2.4,0-25.65,0-50.25,10.19-68.4,28.32h0Z"},null,-1)])]))],8,De)]),e.queuedMessages[o.id]?(a(),n("div",Ae," ✓ "+g(e.queuedMessages[o.id]),1)):r("v-if",!0)])],2112))]),o.devStatus&&o.devStatus!=="stopped"?(a(),n("div",Te,[i[17]||(i[17]=t("span",{class:"status-label"},"Dev Server:",-1)),t("span",{class:z(["status-badge",o.devStatus])},g(o.devStatus),3),o.devUrl?(a(),n("a",{key:0,href:o.devUrl,target:"_blank",class:"dev-link"},"↗",8,je)):r("v-if",!0)])):r("v-if",!0)]))),128))]))]),r(" Create Pane Dialog "),e.showCreateDialog?(a(),n("div",{key:0,class:"action-dialog-overlay",onClick:M(e.closeCreateDialog,["self"])},[t("div",Ie,[i[21]||(i[21]=t("h3",null,"Create New Pane",-1)),e.createStep==="prompt"?(a(),n("div",Me,[i[18]||(i[18]=t("label",{for:"pane-prompt"},"Provide an initial prompt for your agent",-1)),at(t("textarea",{id:"pane-prompt","onUpdate:modelValue":i[1]||(i[1]=o=>e.newPanePrompt=o),placeholder:"E.g., Fix the authentication bug, Add dark mode, etc.",rows:"4",onKeydown:[lt(M(e.createPane,["meta"]),["enter"]),lt(M(e.createPane,["ctrl"]),["enter"])]},null,40,ze),[[it,e.newPanePrompt]]),i[19]||(i[19]=t("div",{class:"dialog-hint"},[P(" 💡 Press "),t("kbd",null,"⌘ Enter"),P(" or "),t("kbd",null,"Ctrl Enter"),P(" to create ")],-1)),t("div",Ne,[t("button",{onClick:e.closeCreateDialog,class:"dialog-btn"},"Cancel"),t("button",{onClick:e.createPane,disabled:!e.newPanePrompt.trim()||e.creatingPane,class:"dialog-btn dialog-btn-primary"},g(e.creatingPane?"Creating...":"Create Pane"),9,He)])])):e.createStep==="agent"?(a(),n("div",Oe,[i[20]||(i[20]=t("p",null,"Multiple agents available. Choose one:",-1)),t("div",Fe,[(a(!0),n(y,null,w(e.availableAgents,o=>(a(),n("button",{key:o,onClick:p=>e.selectAgent(o),class:"agent-choice-button",disabled:e.creatingPane},g(o),9,Ee))),128))]),t("div",{class:"dialog-buttons"},[t("button",{onClick:e.closeCreateDialog,class:"dialog-btn"},"Cancel")])])):r("v-if",!0)])])):r("v-if",!0),r(" Action Dialogs "),e.actionDialog?(a(),n("div",{key:1,class:"action-dialog-overlay",onClick:M(e.closeActionDialog,["self"])},[r(" Confirm Dialog "),e.actionDialog.type==="confirm"?(a(),n("div",Le,[t("h3",null,g(e.actionDialog.title),1),t("p",null,g(e.actionDialog.message),1),e.actionDialogLoading?(a(),n("div",Ve,[...i[22]||(i[22]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Processing...",-1)])])):(a(),n("div",qe,[t("button",{onClick:i[2]||(i[2]=o=>e.confirmAction(!1)),class:"dialog-btn",disabled:e.actionDialogLoading},"Cancel",8,Be),t("button",{onClick:i[3]||(i[3]=o=>e.confirmAction(!0)),class:"dialog-btn dialog-btn-primary",disabled:e.actionDialogLoading},"Confirm",8,Ue)]))])):e.actionDialog.type==="choice"?(a(),n(y,{key:1},[r(" Choice Dialog "),t("div",Je,[t("h3",null,g(e.actionDialog.title),1),e.actionDialog.message?(a(),n("p",Ke,g(e.actionDialog.message),1)):r("v-if",!0),e.actionDialogLoading?(a(),n("div",Qe,[...i[23]||(i[23]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Processing...",-1)])])):(a(),n("div",We,[t("div",Re,[(a(!0),n(y,null,w(e.actionDialog.options,o=>(a(),n("button",{key:o.id,onClick:p=>e.selectChoice(o.id),class:z(["choice-option-btn",{danger:o.danger}]),disabled:e.actionDialogLoading},[t("div",Ge,g(o.label),1),o.description?(a(),n("div",Xe,g(o.description),1)):r("v-if",!0)],10,Ze))),128))]),t("div",Ye,[t("button",{onClick:e.closeActionDialog,class:"dialog-btn",disabled:e.actionDialogLoading},"Cancel",8,$e)])]))])],2112)):e.actionDialog.type==="input"?(a(),n(y,{key:2},[r(" Input Dialog "),t("div",to,[t("h3",null,g(e.actionDialog.title),1),e.actionDialog.message?(a(),n("div",{key:0,class:"dialog-message",innerHTML:e.colorizeDiffStat(e.actionDialog.message)},null,8,eo)):r("v-if",!0),e.actionDialogLoading?(a(),n("div",oo,[...i[24]||(i[24]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Processing...",-1)])])):(a(),n("div",so,[at(t("input",{type:"text","onUpdate:modelValue":i[4]||(i[4]=o=>e.actionDialog.inputValue=o),placeholder:e.actionDialog.placeholder,class:"dialog-input",onKeydown:lt(e.submitInput,["enter"])},null,40,no),[[it,e.actionDialog.inputValue]]),t("div",ao,[t("button",{onClick:e.closeActionDialog,class:"dialog-btn",disabled:e.actionDialogLoading},"Cancel",8,io),t("button",{onClick:e.submitInput,class:"dialog-btn dialog-btn-primary",disabled:e.actionDialogLoading},"Submit",8,lo)])]))])],2112)):r("v-if",!0)])):r("v-if",!0),r(" Settings Dialog "),e.showSettingsDialog&&e.settingsData?(a(),n("div",{key:2,class:"action-dialog-overlay",onClick:M(e.closeSettingsDialog,["self"])},[t("div",co,[i[30]||(i[30]=t("h3",null,"Settings",-1)),e.loadingSettings?(a(),n("div",ro,[...i[25]||(i[25]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Loading...",-1)])])):(a(),n("div",go,[(a(!0),n(y,null,w(e.settingDefinitions,o=>{var p;return a(),n("div",{key:o.key,class:"setting-item"},[t("div",uo,[t("div",vo,[t("div",po,g(o.label),1),t("div",ho,g(o.description),1)])]),r(" Boolean setting "),o.type==="boolean"?(a(),n("div",mo,[t("div",yo,[i[26]||(i[26]=P(" Current: ",-1)),t("strong",null,g(e.settingsData.merged[o.key]?"Enabled":"Disabled"),1),o.key in e.settingsData.project?(a(),n("span",ko,"(project)")):o.key in e.settingsData.global?(a(),n("span",fo,"(global)")):r("v-if",!0)]),t("div",bo,[t("button",{onClick:h=>e.updateSetting(o.key,!0,"global"),class:"setting-btn",disabled:e.loadingSettings}," Enable (global) ",8,_o),t("button",{onClick:h=>e.updateSetting(o.key,!1,"global"),class:"setting-btn",disabled:e.loadingSettings}," Disable (global) ",8,wo),t("button",{onClick:h=>e.updateSetting(o.key,!0,"project"),class:"setting-btn",disabled:e.loadingSettings}," Enable (project) ",8,Co),t("button",{onClick:h=>e.updateSetting(o.key,!1,"project"),class:"setting-btn",disabled:e.loadingSettings}," Disable (project) ",8,So)])])):o.type==="select"?(a(),n(y,{key:1},[r(" Select setting "),t("div",Do,[t("div",Po,[i[27]||(i[27]=P(" Current: ",-1)),t("strong",null,g(((p=o.options.find(h=>h.value===e.settingsData.merged[o.key]))==null?void 0:p.label)||"Not set"),1),o.key in e.settingsData.project?(a(),n("span",xo,"(project)")):o.key in e.settingsData.global?(a(),n("span",Ao,"(global)")):r("v-if",!0)]),(a(!0),n(y,null,w(o.options,h=>(a(),n("div",{class:"setting-select-group",key:h.value},[t("div",To,g(h.label),1),t("div",jo,[t("button",{onClick:f=>e.updateSetting(o.key,h.value,"global"),class:"setting-btn",disabled:e.loadingSettings}," Set global ",8,Io),t("button",{onClick:f=>e.updateSetting(o.key,h.value,"project"),class:"setting-btn",disabled:e.loadingSettings}," Set project ",8,Mo)])]))),128))])],2112)):o.type==="action"?(a(),n(y,{key:2},[r(" Action setting "),t("div",zo,[t("div",No,[t("button",{onClick:e.openHooksSection,class:"setting-btn setting-btn-action",disabled:e.loadingSettings}," Open ",8,Ho)])])],2112)):r("v-if",!0)])}),128))])),r(" Hooks Section (shown when hooks action is triggered) "),e.showHooksSection?(a(),n("div",Oo,[t("div",{class:"hooks-header"},[t("button",{onClick:e.closeHooksSection,class:"back-btn",title:"Back to settings"},"← Back"),i[28]||(i[28]=t("h4",null,"Hooks Management",-1))]),e.loadingHooks?(a(),n("div",Fo,[...i[29]||(i[29]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Loading hooks...",-1)])])):(a(),n("div",Eo,[(a(!0),n(y,null,w(e.hooksData,o=>(a(),n("div",{key:o.name,class:"hook-item"},[t("div",Lo,g(o.name),1),t("div",{class:z(["hook-status",{"hook-active":o.active}])},g(o.active?"✓ Active":"Inactive"),3)]))),128)),t("div",{class:"hooks-actions"},[t("button",{onClick:e.editHooksWithAgent,class:"dialog-btn dialog-btn-primary"}," Edit Hooks with Agent ")])]))])):r("v-if",!0),t("div",{class:"dialog-buttons"},[t("button",{onClick:e.closeSettingsDialog,class:"dialog-btn dialog-btn-primary"},"Close")])])])):r("v-if",!0)])],64)}const qo=Ht(Et,[["render",Vo],["__file","/Users/justinschroeder/Projects/dmux/frontend/src/components/Dashboard.vue"]]),Bo=Ft(qo);Bo.mount("#app");
1
+ import{d as Pe,r as d,o as je,a as Ae,c as o,b as l,e as t,t as c,f as u,n as $e,g as x,F as k,h as f,i as $,w as F,j as Y,v as ee,k as te,l as M,m as Fe}from"./chunks/styles.css_vue_type_style_index_0_src_true_lang-pW5mq51o.js";const Me={class:"session-info"},ze=["title"],Ne={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Ee={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Ie={key:0},Ve={class:"container"},Oe={class:"actions-bar"},He=["disabled"],Le=["disabled"],Be={key:0,class:"no-panes"},qe={key:1,class:"panes-grid"},Je={class:"pane-header"},Ue={class:"pane-header-content"},Ke=["href"],Qe={class:"pane-title"},Re={class:"pane-meta"},We={key:0,class:"pane-autopilot",title:"Autopilot enabled"},Ze={key:1,class:"pane-agent shell",title:"Shell pane"},Ge={class:"pane-id"},Xe=["onClick"],Ye={key:0,class:"action-menu-dropdown"},et=["onClick","disabled"],tt={class:"action-icon"},st={class:"action-label"},at={class:"pane-prompt-section"},ot=["onClick"],lt={class:"prompt-header"},nt={class:"expand-icon"},it={class:"prompt-text"},ct={key:0,class:"pane-prompt-full"},dt={key:1,class:"agent-summary"},rt={key:2,class:"analyzer-error"},ut={key:0,class:"options-dialog"},vt={class:"options-question"},pt={key:0,class:"options-warning"},gt={key:1,class:"analyzing-state"},ht={key:2,class:"options-buttons"},mt=["onClick","disabled"],yt={key:1,class:"analyzing-state"},kt={key:2},bt={class:"prompt-input-wrapper"},_t=["onUpdate:modelValue","placeholder","disabled"],ft=["onClick","disabled","title"],wt={key:0,class:"button-loader"},Ct={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 988.44 1200.05"},St={key:0,class:"queued-message"},xt={key:3,class:"dev-server-status"},Dt=["href"],Tt={class:"action-dialog"},Pt={key:0},jt=["onKeydown"],At={class:"dialog-buttons"},$t=["disabled"],Ft={key:1},Mt={class:"agent-choices"},zt=["onClick","disabled"],Nt={key:0,class:"action-dialog"},Et={key:0,class:"dialog-loading"},It={key:1,class:"dialog-buttons"},Vt=["disabled"],Ot=["disabled"],Ht={key:1,class:"action-dialog"},Lt={key:0},Bt={key:1,class:"dialog-loading"},qt={key:2},Jt={class:"choice-options"},Ut=["onClick","disabled"],Kt={class:"choice-label"},Qt={key:0,class:"choice-description"},Rt={class:"dialog-buttons"},Wt=["disabled"],Zt={key:2,class:"action-dialog"},Gt=["innerHTML"],Xt={key:1,class:"dialog-loading"},Yt={key:2},es=["placeholder"],ts={class:"dialog-buttons"},ss=["disabled"],as=["disabled"],os={class:"action-dialog settings-dialog"},ls={key:0,class:"dialog-loading"},ns={key:1,class:"settings-list"},is={class:"setting-header"},cs={class:"setting-info"},ds={class:"setting-label"},rs={class:"setting-description"},us={key:0,class:"setting-control"},vs={class:"setting-value"},ps={key:0,class:"setting-scope"},gs={key:1,class:"setting-scope"},hs={class:"setting-buttons"},ms=["onClick","disabled"],ys=["onClick","disabled"],ks=["onClick","disabled"],bs=["onClick","disabled"],_s={key:1,class:"setting-control"},fs={class:"setting-value"},ws={key:0,class:"setting-scope"},Cs={key:1,class:"setting-scope"},Ss={class:"setting-option-label"},xs={class:"setting-buttons"},Ds=["onClick","disabled"],Ts=["onClick","disabled"],Ps={key:2,class:"setting-control"},js={class:"setting-buttons"},As=["disabled"],$s={key:2,class:"hooks-section"},Fs={key:0,class:"dialog-loading"},Ms={key:1,class:"hooks-list"},zs={class:"hook-name"},Ns=Pe({__name:"Dashboard",setup(Is){const se=d("Loading..."),q=d(""),J=d(!1),V=d([]),re=d(null),ue=d("Never"),z=d({}),h=d(new Set),O=d({}),w=d(localStorage.getItem("dmux-theme")||"dark"),b=d(new Set),m=d(new Set),U=d(!1),_=d(""),D=d(null),T=d(!1),H=d([]),K=d(!1),C=d("prompt");d([]);const L=d({}),S=d(null),r=d(null),Q=d(!1),p=d(!1),R=d(!1),y=d(null),W=d([]),g=d(!1),N=d(!1),B=d([]),Z=d(!1);let P=null;const ae=()=>{P&&clearInterval(P),le(),P=setInterval(()=>{le()},2e3)},oe=()=>{P&&(clearInterval(P),P=null)},ve=()=>{w.value=w.value==="dark"?"light":"dark",localStorage.setItem("dmux-theme",w.value),document.documentElement.setAttribute("data-theme",w.value)},pe=a=>{b.value.has(a)?b.value.delete(a):b.value.add(a),b.value=new Set(b.value)},ge=()=>{U.value=!0,_.value="",D.value=null,H.value=[],K.value=!1,C.value="prompt",M(()=>{const s=document.getElementById("pane-prompt");s&&s.focus()});const a=s=>{s.key==="Escape"&&(E(),document.removeEventListener("keydown",a))};document.addEventListener("keydown",a)},E=()=>{U.value=!1,_.value="",D.value=null,H.value=[],K.value=!1,C.value="prompt"},I=async()=>{if(!(C.value==="prompt"&&!_.value.trim())&&!(C.value==="agent"&&!D.value))try{T.value=!0;const a={prompt:_.value.trim()};D.value&&(a.agent=D.value);const e=await(await fetch("/api/panes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})).json();e.needsAgentChoice?(K.value=!0,H.value=e.availableAgents,C.value="agent"):E()}catch(a){console.error("Failed to create pane:",a),alert("Failed to create pane")}finally{T.value=!1}},he=a=>{D.value=a,I()},me=a=>{se.value=a.projectName||"dmux",q.value=a.sessionName||"",J.value=!0,V.value=a.panes||[],re.value=new Date,ue.value="Just now";for(const s of V.value)L.value[s.id]||ye(s.id)},le=async()=>{try{const s=await(await fetch("/api/panes")).json();me(s)}catch(a){console.error("Failed to fetch panes:",a),J.value=!1}},ye=async a=>{try{const e=await(await fetch(`/api/panes/${a}/actions`)).json();L.value[a]=e.actions||[]}catch(s){console.error(`Failed to fetch actions for pane ${a}:`,s)}},ke=a=>{S.value===a?S.value=null:S.value=a},be=async(a,s)=>{var e;try{Q.value=!0,S.value=null;const i=await(await fetch(`/api/panes/${a.id}/actions/${s.id}`,{method:"POST"})).json();if(i.requiresInteraction){let v={};i.interactionType==="confirm"?v={type:"confirm",title:i.title||"Confirm",message:i.message,...i.confirmData}:i.interactionType==="choice"?v={type:"choice",title:i.title||"Choose",message:i.message,...i.choiceData}:i.interactionType==="input"&&(v={type:"input",title:i.title||"Input",message:i.message,...i.inputData,inputValue:((e=i.inputData)==null?void 0:e.defaultValue)||""},M(()=>{const X=document.querySelector(".dialog-input");X&&(X.focus(),X.select())})),v.paneId=a.id,r.value=v}}catch(n){console.error("Failed to execute action:",n),alert("Failed to execute action")}finally{Q.value=!1}},j=()=>{r.value=null},ne=async a=>{var s;if(r.value)try{p.value=!0;const n=await(await fetch(`/api/callbacks/confirm/${r.value.callbackId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({confirmed:a})})).json();if(n.requiresInteraction){let i={};n.interactionType==="confirm"?i={type:"confirm",title:n.title||"Confirm",message:n.message,...n.confirmData}:n.interactionType==="choice"?i={type:"choice",title:n.title||"Choose",message:n.message,...n.choiceData}:n.interactionType==="input"&&(i={type:"input",title:n.title||"Input",message:n.message,...n.inputData,inputValue:((s=n.inputData)==null?void 0:s.defaultValue)||""},M(()=>{const v=document.querySelector(".dialog-input");v&&(v.focus(),v.select())})),r.value=i}else j()}catch(e){console.error("Failed to confirm action:",e),alert("Failed to complete action")}finally{p.value=!1}},_e=async a=>{var s;if(r.value)try{p.value=!0;const n=await(await fetch(`/api/callbacks/choice/${r.value.callbackId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({optionId:a})})).json();if(n.requiresInteraction){let i={};n.interactionType==="confirm"?i={type:"confirm",title:n.title||"Confirm",message:n.message,...n.confirmData}:n.interactionType==="choice"?i={type:"choice",title:n.title||"Choose",message:n.message,...n.choiceData}:n.interactionType==="input"&&(i={type:"input",title:n.title||"Input",message:n.message,...n.inputData,inputValue:((s=n.inputData)==null?void 0:s.defaultValue)||""},M(()=>{const v=document.querySelector(".dialog-input");v&&(v.focus(),v.select())})),r.value=i}else j()}catch(e){console.error("Failed to select choice:",e),alert("Failed to complete action")}finally{p.value=!1}},fe=a=>a.split(`
2
+ `).map(s=>{if(s.includes("|")){const e=s.split("|");if(e.length===2){const n=e[0],v=e[1].replace(/\+/g,'<span style="color: #4ade80;">+</span>').replace(/-/g,'<span style="color: #f87171;">-</span>');return n+'<span style="opacity: 0.6;">|</span>'+v}}return s}).join("<br>"),ie=async()=>{var a;if(r.value)try{p.value=!0;const e=await(await fetch(`/api/callbacks/input/${r.value.callbackId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:r.value.inputValue})})).json();if(e.requiresInteraction){let n={};e.interactionType==="confirm"?n={type:"confirm",title:e.title||"Confirm",message:e.message,...e.confirmData}:e.interactionType==="choice"?n={type:"choice",title:e.title||"Choose",message:e.message,...e.choiceData}:e.interactionType==="input"&&(n={type:"input",title:e.title||"Input",message:e.message,...e.inputData,inputValue:((a=e.inputData)==null?void 0:a.defaultValue)||""},M(()=>{const i=document.querySelector(".dialog-input");i&&(i.focus(),i.select())})),r.value=n}else j()}catch(s){console.error("Failed to submit input:",s),alert("Failed to complete action")}finally{p.value=!1}},we=async(a,s)=>{try{m.value.add(a.id),m.value=new Set(m.value);const e=s.keys||[s.action];for(const n of e)await fetch(`/api/keys/${a.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:n})});setTimeout(()=>{m.value.delete(a.id),m.value=new Set(m.value)},1500)}catch(e){console.error("Failed to select option:",e),m.value.delete(a.id),m.value=new Set(m.value)}},Ce=async a=>{const s=z.value[a.id];if(!(!s||!s.trim()))try{h.value.add(a.id),h.value=new Set(h.value),await fetch(`/api/keys/${a.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:s})}),await fetch(`/api/keys/${a.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:"Enter"})}),O.value[a.id]=s.substring(0,50)+(s.length>50?"...":""),z.value[a.id]="",setTimeout(()=>{delete O.value[a.id],h.value.delete(a.id),h.value=new Set(h.value)},3e3)}catch(e){console.error("Failed to send prompt:",e),h.value.delete(a.id),h.value=new Set(h.value)}},Se=a=>{const s=a.target;s.style.height="auto",s.style.height=s.scrollHeight+"px"},xe=async()=>{try{g.value=!0;const s=await(await fetch("/api/settings")).json();y.value=s.settings,W.value=s.definitions,R.value=!0,N.value=!1}catch(a){console.error("Failed to load settings:",a),alert("Failed to load settings")}finally{g.value=!1}},G=()=>{R.value=!1,y.value=null,W.value=[],N.value=!1,B.value=[]},A=async(a,s,e)=>{try{g.value=!0,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:a,value:s,scope:e})});const i=await(await fetch("/api/settings")).json();y.value=i.settings}catch(n){console.error("Failed to update setting:",n),alert("Failed to update setting")}finally{g.value=!1}},De=async()=>{try{Z.value=!0;const s=await(await fetch("/api/hooks")).json();B.value=s.hooks||[],N.value=!0}catch(a){console.error("Failed to load hooks:",a),alert("Failed to load hooks")}finally{Z.value=!1}},ce=()=>{N.value=!1,B.value=[]},Te=async()=>{const a="I would like to edit my dmux hooks in .dmux-hooks, please read the instructions in there and ask me what I want to edit";ce(),G(),_.value=a,await M(),await I()},de=a=>{const s=a.target;S.value&&!s.closest(".action-menu-btn")&&!s.closest(".action-menu-dropdown")&&(S.value=null)};return je(()=>{document.documentElement.setAttribute("data-theme",w.value),ae(),document.addEventListener("click",de),document.addEventListener("visibilitychange",()=>{document.hidden?oe():ae()})}),Ae(()=>{oe(),document.removeEventListener("click",de)}),(a,s)=>(l(),o(k,null,[t("header",null,[s[7]||(s[7]=t("img",{src:"https://cdn.formk.it/dmux/dmux.png",alt:"dmux",class:"logo"},null,-1)),t("h1",null,c(se.value),1),t("div",Me,[t("button",{onClick:ve,class:"theme-toggle",title:w.value==="dark"?"Switch to light mode":"Switch to dark mode"},[w.value==="dark"?(l(),o("svg",Ne,[...s[5]||(s[5]=[t("path",{d:"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z"},null,-1)])])):(l(),o("svg",Ee,[...s[6]||(s[6]=[t("path",{d:"M9.528 1.718a.75.75 0 01.162.819A8.97 8.97 0 009 6.5a9 9 0 009 9 8.97 8.97 0 003.963-.69.75.75 0 01.981.98 10.503 10.503 0 01-9.694 6.46c-5.799 0-10.5-4.701-10.5-10.5 0-4.368 2.667-8.112 6.46-9.694a.75.75 0 01.818.162z"},null,-1)])]))],8,ze),q.value?(l(),o("span",Ie,c(q.value),1)):u("",!0),t("span",{class:"status-indicator",style:$e({color:J.value?"#4ade80":"#f87171"})},"●",4)])]),t("div",Ve,[t("main",null,[t("div",Oe,[t("button",{onClick:ge,class:"create-pane-button",disabled:T.value},[...s[8]||(s[8]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M12 4.5v15m7.5-7.5h-15",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1),x(" Create New Pane ",-1)])],8,He),t("button",{onClick:xe,class:"settings-button",disabled:g.value,title:"Settings"},[...s[9]||(s[9]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M10.5 1.875a1.125 1.125 0 012.25 0v.563c0 1.018.84 1.843 1.854 1.839a.75.75 0 01.585.217l.4.4a.75.75 0 01.216.585c-.004 1.014.821 1.854 1.839 1.854h.563a1.125 1.125 0 010 2.25h-.563c-1.018 0-1.843.84-1.839 1.854a.75.75 0 01-.217.585l-.4.4a.75.75 0 01-.585.216c-1.014-.004-1.854.821-1.854 1.839v.563a1.125 1.125 0 01-2.25 0v-.563c0-1.018-.84-1.843-1.854-1.839a.75.75 0 01-.585-.217l-.4-.4a.75.75 0 01-.216-.585c.004-1.014-.821-1.854-1.839-1.854H3.75a1.125 1.125 0 010-2.25h.563c1.018 0 1.843-.84 1.839-1.854a.75.75 0 01.217-.585l.4-.4a.75.75 0 01.585-.216c1.014.004 1.854-.821 1.854-1.839V1.875zM12 15a3 3 0 100-6 3 3 0 000 6z"})],-1),x(" Settings ",-1)])],8,Le)]),V.value.length===0?(l(),o("div",Be,[...s[10]||(s[10]=[t("p",null,"No dmux panes active",-1),t("p",{class:"hint"},`Click "Create New Pane" above or press 'n' in dmux`,-1)])])):(l(),o("div",qe,[(l(!0),o(k,null,f(V.value,e=>(l(),o("div",{key:e.id,class:"pane-card"},[t("div",Je,[t("div",Ue,[t("a",{href:"/panes/"+e.id,class:"pane-title-link"},[t("span",Qe,c(e.slug),1),s[11]||(s[11]=t("span",{class:"pane-arrow"},"→",-1))],8,Ke),t("div",Re,[e.autopilot?(l(),o("span",We,"🤖")):u("",!0),e.type==="shell"?(l(),o("span",Ze,c(e.shellType||"shell"),1)):(l(),o("span",{key:2,class:$(["pane-agent",e.agent||""])},c(e.agent||"unknown"),3)),t("span",Ge,c(e.paneId),1)])]),t("button",{onClick:n=>ke(e.id),class:"action-menu-btn",title:"Actions"},[...s[12]||(s[12]=[t("span",null,"⋮",-1)])],8,Xe)]),S.value===e.id&&L.value[e.id]?(l(),o("div",Ye,[(l(!0),o(k,null,f(L.value[e.id],n=>(l(),o("button",{key:n.id,onClick:i=>be(e,n),class:"action-menu-item",disabled:Q.value},[t("span",tt,c(n.icon||"•"),1),t("span",st,c(n.label),1)],8,et))),128))])):u("",!0),t("div",at,[t("div",{class:$(["pane-prompt-preview",{expanded:b.value.has(e.id)}]),onClick:n=>pe(e.id)},[t("div",lt,[s[13]||(s[13]=t("span",{class:"prompt-label"},"Initial Prompt",-1)),t("span",nt,c(b.value.has(e.id)?"▼":"▶"),1)]),t("span",it,c(e.prompt||"No prompt"),1)],10,ot),b.value.has(e.id)?(l(),o("div",ct,c(e.prompt||"No prompt"),1)):u("",!0)]),e.agentStatus==="idle"&&e.agentSummary?(l(),o("div",dt,c(e.agentSummary),1)):u("",!0),e.analyzerError?(l(),o("div",rt," ⚠ "+c(e.analyzerError),1)):u("",!0),t("div",{class:"pane-interactive",onClick:s[0]||(s[0]=F(()=>{},["prevent"]))},[e.agentStatus==="waiting"&&e.options&&e.options.length>0?(l(),o("div",ut,[t("div",vt,c(e.optionsQuestion||"Choose an option:"),1),e.potentialHarm&&e.potentialHarm.hasRisk?(l(),o("div",pt," ⚠️ "+c(e.potentialHarm.description),1)):u("",!0),m.value.has(e.id)?(l(),o("div",gt,[...s[14]||(s[14]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Processing selection...",-1)])])):(l(),o("div",ht,[(l(!0),o(k,null,f(e.options,n=>(l(),o("button",{key:n.action,onClick:i=>we(e,n),class:$(["option-button",{"option-button-danger":e.potentialHarm&&e.potentialHarm.hasRisk}]),disabled:m.value.has(e.id)},c(n.action),11,mt))),128))]))])):e.agentStatus==="analyzing"?(l(),o("div",yt,[...s[15]||(s[15]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Analyzing...",-1)])])):(l(),o("div",kt,[t("div",bt,[Y(t("textarea",{"onUpdate:modelValue":n=>z.value[e.id]=n,onInput:Se,placeholder:e.agentStatus==="working"?"Queue a prompt...":"Send a prompt...",disabled:h.value.has(e.id),class:"prompt-textarea",rows:"1"},null,40,_t),[[ee,z.value[e.id]]]),t("button",{onClick:n=>Ce(e),disabled:!z.value[e.id]||h.value.has(e.id),class:"send-button",title:e.agentStatus==="working"?"Queue prompt":"Send prompt"},[h.value.has(e.id)?(l(),o("span",wt)):(l(),o("svg",Ct,[...s[16]||(s[16]=[t("path",{d:"M425.13,28.37L30.09,423.41C11.19,441.37.34,466.2,0,492.27c-.34,26.07,9.86,51.17,28.29,69.61,18.43,18.45,43.52,28.67,69.59,28.35,26.07-.31,50.91-11.14,68.88-30.02l233.16-233.52v776.64c0,34.56,18.43,66.48,48.36,83.76,29.93,17.28,66.8,17.28,96.72,0,29.93-17.28,48.36-49.21,48.36-83.76V328.85l231.72,231.36c24.63,23.41,59.74,32.18,92.48,23.09,32.74-9.08,58.32-34.68,67.38-67.43,9.05-32.75.25-67.85-23.18-92.46L566.73,28.37C548.63,10.16,524-.04,498.33.05c-.8-.06-1.6-.06-2.4,0-.8-.06-1.6-.06-2.4,0-25.65,0-50.25,10.19-68.4,28.32h0Z"},null,-1)])]))],8,ft)]),O.value[e.id]?(l(),o("div",St," ✓ "+c(O.value[e.id]),1)):u("",!0)]))]),e.devStatus&&e.devStatus!=="stopped"?(l(),o("div",xt,[s[17]||(s[17]=t("span",{class:"status-label"},"Dev Server:",-1)),t("span",{class:$(["status-badge",e.devStatus])},c(e.devStatus),3),e.devUrl?(l(),o("a",{key:0,href:e.devUrl,target:"_blank",class:"dev-link"},"↗",8,Dt)):u("",!0)])):u("",!0)]))),128))]))]),U.value?(l(),o("div",{key:0,class:"action-dialog-overlay",onClick:F(E,["self"])},[t("div",Tt,[s[21]||(s[21]=t("h3",null,"Create New Pane",-1)),C.value==="prompt"?(l(),o("div",Pt,[s[18]||(s[18]=t("label",{for:"pane-prompt"},"Provide an initial prompt for your agent",-1)),Y(t("textarea",{id:"pane-prompt","onUpdate:modelValue":s[1]||(s[1]=e=>_.value=e),placeholder:"E.g., Fix the authentication bug, Add dark mode, etc.",rows:"4",onKeydown:[te(F(I,["meta"]),["enter"]),te(F(I,["ctrl"]),["enter"])]},null,40,jt),[[ee,_.value]]),s[19]||(s[19]=t("div",{class:"dialog-hint"},[x(" 💡 Press "),t("kbd",null,"⌘ Enter"),x(" or "),t("kbd",null,"Ctrl Enter"),x(" to create ")],-1)),t("div",At,[t("button",{onClick:E,class:"dialog-btn"},"Cancel"),t("button",{onClick:I,disabled:!_.value.trim()||T.value,class:"dialog-btn dialog-btn-primary"},c(T.value?"Creating...":"Create Pane"),9,$t)])])):C.value==="agent"?(l(),o("div",Ft,[s[20]||(s[20]=t("p",null,"Multiple agents available. Choose one:",-1)),t("div",Mt,[(l(!0),o(k,null,f(H.value,e=>(l(),o("button",{key:e,onClick:n=>he(e),class:"agent-choice-button",disabled:T.value},c(e),9,zt))),128))]),t("div",{class:"dialog-buttons"},[t("button",{onClick:E,class:"dialog-btn"},"Cancel")])])):u("",!0)])])):u("",!0),r.value?(l(),o("div",{key:1,class:"action-dialog-overlay",onClick:F(j,["self"])},[r.value.type==="confirm"?(l(),o("div",Nt,[t("h3",null,c(r.value.title),1),t("p",null,c(r.value.message),1),p.value?(l(),o("div",Et,[...s[22]||(s[22]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Processing...",-1)])])):(l(),o("div",It,[t("button",{onClick:s[2]||(s[2]=e=>ne(!1)),class:"dialog-btn",disabled:p.value},"Cancel",8,Vt),t("button",{onClick:s[3]||(s[3]=e=>ne(!0)),class:"dialog-btn dialog-btn-primary",disabled:p.value},"Confirm",8,Ot)]))])):r.value.type==="choice"?(l(),o("div",Ht,[t("h3",null,c(r.value.title),1),r.value.message?(l(),o("p",Lt,c(r.value.message),1)):u("",!0),p.value?(l(),o("div",Bt,[...s[23]||(s[23]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Processing...",-1)])])):(l(),o("div",qt,[t("div",Jt,[(l(!0),o(k,null,f(r.value.options,e=>(l(),o("button",{key:e.id,onClick:n=>_e(e.id),class:$(["choice-option-btn",{danger:e.danger}]),disabled:p.value},[t("div",Kt,c(e.label),1),e.description?(l(),o("div",Qt,c(e.description),1)):u("",!0)],10,Ut))),128))]),t("div",Rt,[t("button",{onClick:j,class:"dialog-btn",disabled:p.value},"Cancel",8,Wt)])]))])):r.value.type==="input"?(l(),o("div",Zt,[t("h3",null,c(r.value.title),1),r.value.message?(l(),o("div",{key:0,class:"dialog-message",innerHTML:fe(r.value.message)},null,8,Gt)):u("",!0),p.value?(l(),o("div",Xt,[...s[24]||(s[24]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Processing...",-1)])])):(l(),o("div",Yt,[Y(t("input",{type:"text","onUpdate:modelValue":s[4]||(s[4]=e=>r.value.inputValue=e),placeholder:r.value.placeholder,class:"dialog-input",onKeydown:te(ie,["enter"])},null,40,es),[[ee,r.value.inputValue]]),t("div",ts,[t("button",{onClick:j,class:"dialog-btn",disabled:p.value},"Cancel",8,ss),t("button",{onClick:ie,class:"dialog-btn dialog-btn-primary",disabled:p.value},"Submit",8,as)])]))])):u("",!0)])):u("",!0),R.value&&y.value?(l(),o("div",{key:2,class:"action-dialog-overlay",onClick:F(G,["self"])},[t("div",os,[s[30]||(s[30]=t("h3",null,"Settings",-1)),g.value?(l(),o("div",ls,[...s[25]||(s[25]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Loading...",-1)])])):(l(),o("div",ns,[(l(!0),o(k,null,f(W.value,e=>{var n;return l(),o("div",{key:e.key,class:"setting-item"},[t("div",is,[t("div",cs,[t("div",ds,c(e.label),1),t("div",rs,c(e.description),1)])]),e.type==="boolean"?(l(),o("div",us,[t("div",vs,[s[26]||(s[26]=x(" Current: ",-1)),t("strong",null,c(y.value.merged[e.key]?"Enabled":"Disabled"),1),e.key in y.value.project?(l(),o("span",ps,"(project)")):e.key in y.value.global?(l(),o("span",gs,"(global)")):u("",!0)]),t("div",hs,[t("button",{onClick:i=>A(e.key,!0,"global"),class:"setting-btn",disabled:g.value}," Enable (global) ",8,ms),t("button",{onClick:i=>A(e.key,!1,"global"),class:"setting-btn",disabled:g.value}," Disable (global) ",8,ys),t("button",{onClick:i=>A(e.key,!0,"project"),class:"setting-btn",disabled:g.value}," Enable (project) ",8,ks),t("button",{onClick:i=>A(e.key,!1,"project"),class:"setting-btn",disabled:g.value}," Disable (project) ",8,bs)])])):e.type==="select"?(l(),o("div",_s,[t("div",fs,[s[27]||(s[27]=x(" Current: ",-1)),t("strong",null,c(((n=e.options.find(i=>i.value===y.value.merged[e.key]))==null?void 0:n.label)||"Not set"),1),e.key in y.value.project?(l(),o("span",ws,"(project)")):e.key in y.value.global?(l(),o("span",Cs,"(global)")):u("",!0)]),(l(!0),o(k,null,f(e.options,i=>(l(),o("div",{class:"setting-select-group",key:i.value},[t("div",Ss,c(i.label),1),t("div",xs,[t("button",{onClick:v=>A(e.key,i.value,"global"),class:"setting-btn",disabled:g.value}," Set global ",8,Ds),t("button",{onClick:v=>A(e.key,i.value,"project"),class:"setting-btn",disabled:g.value}," Set project ",8,Ts)])]))),128))])):e.type==="action"?(l(),o("div",Ps,[t("div",js,[t("button",{onClick:De,class:"setting-btn setting-btn-action",disabled:g.value}," Open ",8,As)])])):u("",!0)])}),128))])),N.value?(l(),o("div",$s,[t("div",{class:"hooks-header"},[t("button",{onClick:ce,class:"back-btn",title:"Back to settings"},"← Back"),s[28]||(s[28]=t("h4",null,"Hooks Management",-1))]),Z.value?(l(),o("div",Fs,[...s[29]||(s[29]=[t("div",{class:"loader-spinner"},null,-1),t("span",null,"Loading hooks...",-1)])])):(l(),o("div",Ms,[(l(!0),o(k,null,f(B.value,e=>(l(),o("div",{key:e.name,class:"hook-item"},[t("div",zs,c(e.name),1),t("div",{class:$(["hook-status",{"hook-active":e.active}])},c(e.active?"✓ Active":"Inactive"),3)]))),128)),t("div",{class:"hooks-actions"},[t("button",{onClick:Te,class:"dialog-btn dialog-btn-primary"}," Edit Hooks with Agent ")])]))])):u("",!0),t("div",{class:"dialog-buttons"},[t("button",{onClick:G,class:"dialog-btn dialog-btn-primary"},"Close")])])])):u("",!0)])],64))}}),Es=Fe(Ns);Es.mount("#app");
@@ -1 +1 @@
1
- {"version":3,"file":"useActionSystem.d.ts","sourceRoot":"","sources":["../../src/hooks/useActionSystem.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAiB,UAAU,EAAsB,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,qBAAqB;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAGzD,cAAc,CAAC,EAAE;QACf,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/G,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,OAAO,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACvL,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC3H,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/G,CAAC;CACH;AAwGD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,KAAK,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACf,EAAE,qBAAqB;;8BAkBV,UAAU,QACd,QAAQ,WACL,GAAG;gCA0BF,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,YACpC;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;8BAgDnB,MAAM,cAAc;;;EAuBlE"}
1
+ {"version":3,"file":"useActionSystem.d.ts","sourceRoot":"","sources":["../../src/hooks/useActionSystem.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAiB,UAAU,EAAsB,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,qBAAqB;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAGzD,cAAc,CAAC,EAAE;QACf,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/G,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,OAAO,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACvL,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC3H,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/G,CAAC;CACH;AAyFD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,KAAK,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACf,EAAE,qBAAqB;;8BAkBV,UAAU,QACd,QAAQ,WACL,GAAG;gCA0BF,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,YACpC;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;8BAgDnB,MAAM,cAAc;;;EAuBlE"}
@@ -56,30 +56,15 @@ async function handleResultWithPopups(result, popupLaunchers, context, setAction
56
56
  return;
57
57
  }
58
58
  // Handle non-interactive results (success, error, info, etc.)
59
- if (popupLaunchers?.launchProgressPopup) {
60
- const type = result.type === 'error' ? 'error' : result.type === 'success' ? 'success' : 'info';
61
- await popupLaunchers.launchProgressPopup(result.message, type, 1000);
62
- // Force repaint after popup dismisses (with a slight delay to avoid layout issues)
63
- if (context.forceRepaint) {
64
- setTimeout(() => {
65
- context.forceRepaint();
66
- }, 300);
67
- }
68
- }
69
- else {
70
- // Fallback to inline status message
71
- setActionState(prev => ({
72
- ...prev,
73
- statusMessage: result.message,
74
- statusType: result.type === 'error' ? 'error' : result.type === 'success' ? 'success' : 'info',
75
- }));
76
- // Auto-clear after 3 seconds
59
+ // Use toast notification for better UX
60
+ const { default: stateManager } = await import('../shared/StateManager.js');
61
+ const type = result.type === 'error' ? 'error' : result.type === 'success' ? 'success' : 'info';
62
+ stateManager.showToast(result.message, type);
63
+ // Force repaint after showing toast
64
+ if (context.forceRepaint) {
77
65
  setTimeout(() => {
78
- setActionState(prev => ({
79
- ...prev,
80
- statusMessage: '',
81
- }));
82
- }, 3000);
66
+ context.forceRepaint();
67
+ }, 100);
83
68
  }
84
69
  }
85
70
  export default function useActionSystem({ panes, savePanes, sessionName, projectName, onPaneUpdate, onPaneRemove, forceRepaint, onActionResult, popupLaunchers, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"useActionSystem.js","sourceRoot":"","sources":["../../src/hooks/useActionSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useActionSystem.js","sourceRoot":"","sources":["../../src/hooks/useActionSystem.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useInputHandling.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputHandling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useInputHandling.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputHandling.ts"],"names":[],"mappings":"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"}
@@ -17,8 +17,10 @@ export function useInputHandling(params) {
17
17
  useInput(async (input, key) => {
18
18
  const logService = LogService.getInstance();
19
19
  // Log all input for debugging (only first 50 chars to avoid spam)
20
- const inputPreview = input.length > 50 ? input.substring(0, 50) + "..." : input;
21
- logService.debug(`Input: "${inputPreview}"`, "InputDebug");
20
+ // Commented out to reduce log noise
21
+ // const inputPreview =
22
+ // input.length > 50 ? input.substring(0, 50) + "..." : input
23
+ // logService.debug(`Input: "${inputPreview}"`, "InputDebug")
22
24
  // Ignore input temporarily after popup operations (prevents buffered keys from being processed)
23
25
  if (ignoreInput) {
24
26
  return;
@@ -190,6 +192,18 @@ export function useInputHandling(params) {
190
192
  setStatusMessage("Layout reset");
191
193
  setTimeout(() => setStatusMessage(""), STATUS_MESSAGE_DURATION_SHORT);
192
194
  }
195
+ else if (input === "T") {
196
+ // Demo toasts (Shift+T) - cycles through different types
197
+ const stateManager = StateManager.getInstance();
198
+ const demos = [
199
+ { msg: "Pane created successfully", severity: "success" },
200
+ { msg: "Failed to merge: conflicts detected", severity: "error" },
201
+ { msg: "Warning: API key not configured", severity: "warning" },
202
+ { msg: "This is a longer informational message that will wrap to multiple lines if needed to demonstrate how toasts handle longer content", severity: "info" },
203
+ ];
204
+ // Queue all demo toasts
205
+ demos.forEach(demo => stateManager.showToast(demo.msg, demo.severity));
206
+ }
193
207
  else if (input === "q") {
194
208
  cleanExit();
195
209
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useInputHandling.js","sourceRoot":"","sources":["../../src/hooks/useInputHandling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useInputHandling.js","sourceRoot":"","sources":["../../src/hooks/useInputHandling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAmErD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8B;IAC7D,MAAM,EACJ,KAAK,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,SAAS,EACT,mBAAmB,GACpB,GAAG,MAAM,CAAA;IAEV,QAAQ,CAAC,KAAK,EAAE,KAAa,EAAE,GAAQ,EAAE,EAAE;QACzC,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;QAE3C,kEAAkE;QAClE,oCAAoC;QACpC,uBAAuB;QACvB,+DAA+D;QAC/D,6DAA6D;QAE7D,gGAAgG;QAChG,IAAI,WAAW,EAAE,CAAC;YAChB,OAAM;QACR,CAAC;QAED,+EAA+E;QAC/E,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,IAAI,eAAe,EAAE,CAAC;gBACpB,gCAAgC;gBAChC,SAAS,EAAE,CAAA;YACb,CAAC;iBAAM,CAAC;gBACN,mCAAmC;gBACnC,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBACxB,2DAA2D;gBAC3D,UAAU,CAAC,GAAG,EAAE;oBACd,kBAAkB,CAAC,KAAK,CAAC,CAAA;gBAC3B,CAAC,EAAE,IAAI,CAAC,CAAA;YACV,CAAC;YACD,OAAM;QACR,CAAC;QAED,IAAI,cAAc,IAAI,cAAc,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;YAChE,uDAAuD;YACvD,OAAM;QACR,CAAC;QAED,4CAA4C;QAC5C,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,kBAAkB,CAAC,KAAK,CAAC,CAAA;gBACzB,OAAM;YACR,CAAC;YACD,sDAAsD;QACxD,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBACnC,qBAAqB,CAAC,KAAK,CAAC,CAAA;gBAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;gBACzC,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,IAAI,kBAAkB,EAAE,CAAC;oBACpE,MAAM,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;oBAEhD,kDAAkD;oBAClD,MAAM,WAAW,GAAG;wBAClB,GAAG,eAAe;wBAClB,CAAC,kBAAkB,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,EAC9D,IAAI;qBACP,CAAA;oBACD,MAAM,YAAY,CAAC,WAAW,CAAC,CAAA;oBAE/B,6BAA6B;oBAC7B,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;gBAC5D,CAAC;gBACD,qBAAqB,CAAC,IAAI,CAAC,CAAA;YAC7B,CAAC;iBAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACxD,qBAAqB,CAAC,KAAK,CAAC,CAAA;gBAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;gBACzC,IAAI,YAAY,IAAI,kBAAkB,EAAE,CAAC;oBACvC,qDAAqD;oBACrD,MAAM,WAAW,GAAG;wBAClB,GAAG,eAAe;wBAClB,CAAC,kBAAkB,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,EAC9D,IAAI;qBACP,CAAA;oBACD,MAAM,YAAY,CAAC,WAAW,CAAC,CAAA;oBAE/B,6BAA6B;oBAC7B,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;gBAC5D,CAAC;gBACD,qBAAqB,CAAC,IAAI,CAAC,CAAA;YAC7B,CAAC;YACD,OAAM;QACR,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,oBAAoB,CAAC,IAAI,CAAC,CAAA;gBAC1B,eAAe,CAAC,EAAE,CAAC,CAAA;YACrB,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACtB,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC/B,+DAA+D;oBAC/D,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAA;oBACzD,IAAI,SAAS,EAAE,CAAC;wBACd,eAAe,CAAC,SAAS,CAAC,CAAA;oBAC5B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,+BAA+B;oBAC/B,MAAM,WAAW,GAAG;wBAClB,GAAG,eAAe;wBAClB,CAAC,iBAAiB,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,EAC3D,YAAY,CAAC,IAAI,EAAE;qBACtB,CAAA;oBACD,MAAM,YAAY,CAAC,WAAW,CAAC,CAAA;oBAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;oBACzC,IAAI,YAAY,EAAE,CAAC;wBACjB,qBAAqB;wBACrB,MAAM,UAAU,GACd,iBAAiB,KAAK,MAAM;4BAC1B,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY;4BAC/B,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAA;wBAClC,IAAI,UAAU,EAAE,CAAC;4BACf,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;4BACxC,oBAAoB,CAAC,IAAI,CAAC,CAAA;4BAC1B,qBAAqB,CAAC,IAAI,CAAC,CAAA;wBAC7B,CAAC;6BAAM,CAAC;4BACN,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAA;4BACzD,oBAAoB,CAAC,IAAI,CAAC,CAAA;4BAC1B,eAAe,CAAC,EAAE,CAAC,CAAA;wBACrB,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,oBAAoB,CAAC,IAAI,CAAC,CAAA;wBAC1B,eAAe,CAAC,EAAE,CAAC,CAAA;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAM;QACR,CAAC;QAED,iFAAiF;QACjF,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACpE,IAAI,WAAW,GAAkB,IAAI,CAAA;YAErC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,WAAW,GAAG,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;YACxD,CAAC;iBAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACzB,WAAW,GAAG,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;iBAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACzB,WAAW,GAAG,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC1B,WAAW,GAAG,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;YAC3D,CAAC;YAED,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,gBAAgB,CAAC,WAAW,CAAC,CAAA;YAC/B,CAAC;YACD,OAAM;QACR,CAAC;QAED,IAAI,KAAK,KAAK,GAAG,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAClD,0CAA0C;YAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;YACzC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;YACtE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE;oBACvD,UAAU,EAAE,aAAa,EAAE;iBAC5B,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,sBAAsB;YACtB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,IAAI,EAAE;gBAC/D,qBAAqB;gBACrB,MAAM,YAAY,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;oBAC7C,4BAA4B;oBAC5B,MAAM,MAAM,GACV,yHAAyH,CAAA;oBAC3H,MAAM,2BAA2B,CAAC,MAAM,CAAC,CAAA;gBAC3C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,IAAI,MAAM,EAAE,CAAC;gBACX,eAAe,CAAC,aAAa,CAC3B,MAAM,CAAC,GAA+C,EACtD,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,KAAK,CACb,CAAA;gBACD,gBAAgB,CAAC,kBAAkB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;gBACnD,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAA;YACvE,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,kBAAkB;YAClB,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;QACtC,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,gCAAgC;YAChC,MAAM,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;QAC1D,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,kDAAkD;YAClD,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;YACpD,gBAAgB,CAAC,cAAc,CAAC,CAAA;YAChC,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAA;QACvE,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,yDAAyD;YACzD,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAA;YAC/C,MAAM,KAAK,GAAG;gBACZ,EAAE,GAAG,EAAE,2BAA2B,EAAE,QAAQ,EAAE,SAAkB,EAAE;gBAClE,EAAE,GAAG,EAAE,qCAAqC,EAAE,QAAQ,EAAE,OAAgB,EAAE;gBAC1E,EAAE,GAAG,EAAE,iCAAiC,EAAE,QAAQ,EAAE,SAAkB,EAAE;gBACxE,EAAE,GAAG,EAAE,mIAAmI,EAAE,QAAQ,EAAE,MAAe,EAAE;aACxK,CAAA;YACD,wBAAwB;YACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxE,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,SAAS,EAAE,CAAA;QACb,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;YACnC,uBAAuB;YACvB,IAAI,SAAS,EAAE,CAAC;gBACd,0CAA0C;gBAC1C,MAAM,YAAY,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE;oBACnD,eAAe,CAAC,IAAI,CAAC,CAAA;oBACrB,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,6BAA6B,CAAC,CAAA;gBACzE,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3B,wBAAwB;gBACxB,iBAAiB,CAAC,IAAI,CAAC,CACtB;gBAAA,CAAC,KAAK,IAAI,EAAE;oBACX,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAA;wBACtC,YAAY,CAAC,GAAG,CAAC,CAAA;oBACnB,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,gBAAgB,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC7D,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,4BAA4B,CAAC,CAAA;oBACtE,CAAC;4BAAS,CAAC;wBACT,iBAAiB,CAAC,KAAK,CAAC,CAAA;oBAC1B,CAAC;gBACH,CAAC,CAAC,EAAE,CAAA;YACN,CAAC;YACD,2DAA2D;YAC3D,OAAM;QACR,CAAC;aAAM,IACL,CAAC,SAAS;YACV,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,EACjE,CAAC;YACD,kCAAkC;YAClC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAA;YAC3D,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,2BAA2B,CAAC,WAAW,CAAC,CAAA;YAChD,CAAC;YACD,OAAM;QACR,CAAC;aAAM,IACL,CAAC,SAAS;YACV,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,aAAa,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACrE,CAAC;YACD,8CAA8C;YAC9C,IAAI,CAAC;gBACH,iBAAiB,CAAC,IAAI,CAAC,CAAA;gBACvB,gBAAgB,CAAC,2BAA2B,CAAC,CAAA;gBAE7C,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;gBAE7C,kCAAkC;gBAClC,MAAM,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;gBAE/B,mCAAmC;gBACnC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAA;gBAEpE,mFAAmF;gBACnF,gDAAgD;gBAEhD,iBAAiB,CAAC,KAAK,CAAC,CAAA;gBACxB,gBAAgB,CAAC,uBAAuB,CAAC,CAAA;gBACzC,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAA;gBAErE,+CAA+C;gBAC/C,MAAM,SAAS,EAAE,CAAA;YACnB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,CAAC,CAAA;gBACxB,gBAAgB,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;gBACpE,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,4BAA4B,CAAC,CAAA;YACtE,CAAC;YACD,OAAM;QACR,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACzD,0CAA0C;YAC1C,YAAY,CAAC,WAAW,EAAE,CAAC,eAAe,CACxC,oBAAoB,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAChD,CAAA;YACD,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAA;YAC/F,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;QACnE,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACzD,wCAAwC;YACxC,YAAY,CAAC,WAAW,EAAE,CAAC,eAAe,CACxC,iBAAiB,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAC7C,CAAA;YACD,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAA;YAC/F,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;QACpE,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACtD,0CAA0C;YAC1C,YAAY,CAAC,WAAW,EAAE,CAAC,eAAe,CACxC,oBAAoB,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAChD,CAAA;YACD,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAA;YAC/F,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;QACnE,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLayoutManagement.d.ts","sourceRoot":"","sources":["../../src/hooks/useLayoutManagement.ts"],"names":[],"mappings":"AAIA,UAAU,uBAAuB;IAC/B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,eAAe,EACf,cAAc,GACf,EAAE,uBAAuB,QA4DzB"}
1
+ {"version":3,"file":"useLayoutManagement.d.ts","sourceRoot":"","sources":["../../src/hooks/useLayoutManagement.ts"],"names":[],"mappings":"AAKA,UAAU,uBAAuB;IAC/B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,eAAe,EACf,cAAc,GACf,EAAE,uBAAuB,QAsGzB"}
@@ -1,6 +1,7 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
  import { enforceControlPaneSize } from '../utils/tmux.js';
3
3
  import { SIDEBAR_WIDTH } from '../utils/layoutManager.js';
4
+ import { LogService } from '../services/LogService.js';
4
5
  /**
5
6
  * Manages periodic enforcement of control pane (sidebar) size
6
7
  * Ensures the sidebar stays at SIDEBAR_WIDTH (40 chars) even after terminal resizes
@@ -9,15 +10,21 @@ export function useLayoutManagement({ controlPaneId, hasActiveDialog, onForceRep
9
10
  // Use refs to track state across resize events
10
11
  const resizeTimeoutRef = useRef(null);
11
12
  const isApplyingLayoutRef = useRef(false);
13
+ // Track if component is still mounted to avoid state updates after unmount
14
+ const isMountedRef = useRef(true);
12
15
  useEffect(() => {
16
+ isMountedRef.current = true;
13
17
  if (!controlPaneId) {
14
18
  return; // No sidebar layout configured
15
19
  }
16
- // Enforce sidebar width immediately on mount
17
- enforceControlPaneSize(controlPaneId, SIDEBAR_WIDTH);
20
+ // Enforce sidebar width immediately on mount (with error handling)
21
+ enforceControlPaneSize(controlPaneId, SIDEBAR_WIDTH).catch(error => {
22
+ LogService.getInstance().warn(`Initial layout enforcement failed: ${error}`, 'ResizeDebug');
23
+ });
18
24
  const handleResize = () => {
19
- // Skip if we're already applying a layout (prevents loops)
25
+ // Skip if we're already applying a layout (prevents loops and race conditions)
20
26
  if (isApplyingLayoutRef.current) {
27
+ LogService.getInstance().debug('Skipping resize - layout already in progress', 'ResizeDebug');
21
28
  return;
22
29
  }
23
30
  // Clear any pending resize
@@ -25,18 +32,44 @@ export function useLayoutManagement({ controlPaneId, hasActiveDialog, onForceRep
25
32
  clearTimeout(resizeTimeoutRef.current);
26
33
  }
27
34
  // Debounce: wait 500ms after last resize event (prevents excessive recalculations)
28
- resizeTimeoutRef.current = setTimeout(() => {
35
+ resizeTimeoutRef.current = setTimeout(async () => {
36
+ // Check if component is still mounted
37
+ if (!isMountedRef.current) {
38
+ return;
39
+ }
29
40
  // Only enforce if not showing dialogs (to avoid interference)
30
41
  if (!hasActiveDialog) {
42
+ // Double-check we're not already applying (race condition protection)
43
+ if (isApplyingLayoutRef.current) {
44
+ return;
45
+ }
31
46
  isApplyingLayoutRef.current = true;
32
- // Only enforce sidebar width when terminal resizes
33
- enforceControlPaneSize(controlPaneId, SIDEBAR_WIDTH);
34
- // Force Ink to repaint after resize to prevent blank dmux pane
35
- onForceRepaint();
36
- // Reset flag after a brief delay
37
- setTimeout(() => {
38
- isApplyingLayoutRef.current = false;
39
- }, 100);
47
+ LogService.getInstance().debug('Starting resize handler', 'ResizeDebug');
48
+ try {
49
+ // Only enforce sidebar width when terminal resizes
50
+ await enforceControlPaneSize(controlPaneId, SIDEBAR_WIDTH);
51
+ // Check if still mounted before updating UI
52
+ if (!isMountedRef.current) {
53
+ return;
54
+ }
55
+ LogService.getInstance().debug('enforceControlPaneSize complete, calling onForceRepaint', 'ResizeDebug');
56
+ // CRITICAL: Force Ink to repaint AFTER layout changes complete
57
+ // This ensures the dmux UI redraws last, preventing blank pane
58
+ onForceRepaint();
59
+ LogService.getInstance().debug('onForceRepaint called', 'ResizeDebug');
60
+ }
61
+ catch (error) {
62
+ // Log error but don't crash - layout will be retried on next resize
63
+ LogService.getInstance().warn(`Layout enforcement failed during resize: ${error}`, 'ResizeDebug');
64
+ }
65
+ finally {
66
+ // Reset flag after a brief delay (always reset, even on error)
67
+ setTimeout(() => {
68
+ if (isMountedRef.current) {
69
+ isApplyingLayoutRef.current = false;
70
+ }
71
+ }, 100);
72
+ }
40
73
  }
41
74
  }, 500);
42
75
  };
@@ -46,6 +79,7 @@ export function useLayoutManagement({ controlPaneId, hasActiveDialog, onForceRep
46
79
  process.on('SIGWINCH', handleResize);
47
80
  process.on('SIGUSR1', handleResize);
48
81
  return () => {
82
+ isMountedRef.current = false;
49
83
  process.stdout.off('resize', handleResize);
50
84
  process.off('SIGWINCH', handleResize);
51
85
  process.off('SIGUSR1', handleResize);
@@ -1 +1 @@
1
- {"version":3,"file":"useLayoutManagement.js","sourceRoot":"","sources":["../../src/hooks/useLayoutManagement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ1D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,aAAa,EACb,eAAe,EACf,cAAc,GACU;IACxB,+CAA+C;IAC/C,MAAM,gBAAgB,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC7D,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,+BAA+B;QACzC,CAAC;QAED,6CAA6C;QAC7C,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAErD,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,2DAA2D;YAC3D,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,2BAA2B;YAC3B,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC7B,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;YAED,mFAAmF;YACnF,gBAAgB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzC,8DAA8D;gBAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;oBAEnC,mDAAmD;oBACnD,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;oBAErD,+DAA+D;oBAC/D,cAAc,EAAE,CAAC;oBAEjB,iCAAiC;oBACjC,UAAU,CAAC,GAAG,EAAE;wBACd,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;oBACtC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACV,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC;QAEF,iCAAiC;QACjC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE1C,8DAA8D;QAC9D,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACrC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAEpC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACrC,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC7B,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"useLayoutManagement.js","sourceRoot":"","sources":["../../src/hooks/useLayoutManagement.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,9 @@ export declare function recreateMissingPanes(missingPanes: DmuxPane[], panesFile
34
34
  /**
35
35
  * Recreates worktree panes that were killed by the user (e.g., via Ctrl+b x)
36
36
  * Called during periodic polling after initial load
37
+ *
38
+ * IMPORTANT: Checks PaneLifecycleManager to avoid recreating panes that are
39
+ * being intentionally closed (prevents race condition with close/merge actions)
37
40
  */
38
41
  export declare function recreateKilledWorktreePanes(panes: DmuxPane[], allPaneIds: string[], panesFile: string): Promise<DmuxPane[]>;
39
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"usePaneLoading.d.ts","sourceRoot":"","sources":["../../src/hooks/usePaneLoading.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQ5C,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,SAAI,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAuCxH;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAoB9E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,QAAQ,EAAE,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgFrB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
1
+ {"version":3,"file":"usePaneLoading.d.ts","sourceRoot":"","sources":["../../src/hooks/usePaneLoading.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAS5C,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,SAAI,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAuCxH;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAoB9E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,QAAQ,EAAE,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAmGrB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
@@ -3,6 +3,7 @@ import { splitPane } from '../utils/tmux.js';
3
3
  import { rebindPaneByTitle } from '../utils/paneRebinding.js';
4
4
  import { LogService } from '../services/LogService.js';
5
5
  import { TmuxService } from '../services/TmuxService.js';
6
+ import { PaneLifecycleManager } from '../services/PaneLifecycleManager.js';
6
7
  import { TMUX_RETRY_DELAY } from '../constants/timing.js';
7
8
  /**
8
9
  * Fetches all tmux pane IDs and titles for the current session
@@ -38,7 +39,10 @@ export async function fetchTmuxPaneIds(maxRetries = 2) {
38
39
  }
39
40
  catch (error) {
40
41
  // Retry on tmux command failure (common during rapid pane creation/destruction)
41
- LogService.getInstance().debug(`Tmux fetch failed (attempt ${retryCount + 1}/${maxRetries}): ${error instanceof Error ? error.message : String(error)}`, 'usePaneLoading');
42
+ // LogService.getInstance().debug(
43
+ // `Tmux fetch failed (attempt ${retryCount + 1}/${maxRetries}): ${error instanceof Error ? error.message : String(error)}`,
44
+ // 'usePaneLoading'
45
+ // );
42
46
  if (retryCount < maxRetries)
43
47
  await new Promise(r => setTimeout(r, TMUX_RETRY_DELAY));
44
48
  }
@@ -65,7 +69,10 @@ export async function loadPanesFromFile(panesFile) {
65
69
  catch (error) {
66
70
  // Return empty array if config file doesn't exist or is invalid
67
71
  // This is expected on first run
68
- LogService.getInstance().debug(`Config file not found or invalid: ${error instanceof Error ? error.message : String(error)}`, 'usePaneLoading');
72
+ // LogService.getInstance().debug(
73
+ // `Config file not found or invalid: ${error instanceof Error ? error.message : String(error)}`,
74
+ // 'usePaneLoading'
75
+ // );
69
76
  return [];
70
77
  }
71
78
  }
@@ -105,13 +112,34 @@ export async function recreateMissingPanes(missingPanes, panesFile) {
105
112
  /**
106
113
  * Recreates worktree panes that were killed by the user (e.g., via Ctrl+b x)
107
114
  * Called during periodic polling after initial load
115
+ *
116
+ * IMPORTANT: Checks PaneLifecycleManager to avoid recreating panes that are
117
+ * being intentionally closed (prevents race condition with close/merge actions)
108
118
  */
109
119
  export async function recreateKilledWorktreePanes(panes, allPaneIds, panesFile) {
110
- const worktreePanesToRecreate = panes.filter(pane => !allPaneIds.includes(pane.paneId) && pane.worktreePath);
120
+ const lifecycleManager = PaneLifecycleManager.getInstance();
121
+ // Filter out panes that are being intentionally closed
122
+ const worktreePanesToRecreate = panes.filter(pane => {
123
+ // Pane must be missing from tmux and have a worktree path
124
+ if (allPaneIds.includes(pane.paneId) || !pane.worktreePath) {
125
+ return false;
126
+ }
127
+ // CRITICAL: Check if this pane is being intentionally closed
128
+ // This is a safety belt - the main protection is that close action
129
+ // removes pane from config BEFORE killing tmux pane
130
+ if (lifecycleManager.isClosing(pane.id) || lifecycleManager.isClosing(pane.paneId)) {
131
+ LogService.getInstance().debug(`Skipping recreation of pane ${pane.id} (${pane.slug}) - intentionally being closed`, 'shellDetection');
132
+ return false;
133
+ }
134
+ return true;
135
+ });
111
136
  if (worktreePanesToRecreate.length === 0)
112
137
  return panes;
113
138
  const tmuxService = TmuxService.getInstance();
114
- LogService.getInstance().debug(`Recreating ${worktreePanesToRecreate.length} killed worktree panes`, 'shellDetection');
139
+ // LogService.getInstance().debug(
140
+ // `Recreating ${worktreePanesToRecreate.length} killed worktree panes`,
141
+ // 'shellDetection'
142
+ // );
115
143
  const updatedPanes = [...panes];
116
144
  for (const pane of worktreePanesToRecreate) {
117
145
  try {
@@ -131,10 +159,16 @@ export async function recreateKilledWorktreePanes(panes, allPaneIds, panesFile)
131
159
  await tmuxService.sendKeys(newPaneId, `"echo '# Original prompt: ${promptPreview}...'" Enter`);
132
160
  }
133
161
  await tmuxService.sendKeys(newPaneId, `"cd ${pane.worktreePath}" Enter`);
134
- LogService.getInstance().debug(`Recreated worktree pane ${pane.id} (${pane.slug}) with new ID ${newPaneId}`, 'shellDetection');
162
+ // LogService.getInstance().debug(
163
+ // `Recreated worktree pane ${pane.id} (${pane.slug}) with new ID ${newPaneId}`,
164
+ // 'shellDetection'
165
+ // );
135
166
  }
136
167
  catch (error) {
137
- LogService.getInstance().debug(`Failed to recreate worktree pane ${pane.id} (${pane.slug})`, 'shellDetection');
168
+ // LogService.getInstance().debug(
169
+ // `Failed to recreate worktree pane ${pane.id} (${pane.slug})`,
170
+ // 'shellDetection'
171
+ // );
138
172
  }
139
173
  }
140
174
  // Recalculate layout after recreating panes
@@ -147,11 +181,17 @@ export async function recreateKilledWorktreePanes(panes, allPaneIds, panesFile)
147
181
  const dimensions = getTerminalDimensions();
148
182
  const contentPaneIds = updatedPanes.map(p => p.paneId);
149
183
  recalculateAndApplyLayout(config.controlPaneId, contentPaneIds, dimensions.width, dimensions.height);
150
- LogService.getInstance().debug(`Recalculated layout after recreating worktree panes`, 'shellDetection');
184
+ // LogService.getInstance().debug(
185
+ // `Recalculated layout after recreating worktree panes`,
186
+ // 'shellDetection'
187
+ // );
151
188
  }
152
189
  }
153
190
  catch (error) {
154
- LogService.getInstance().debug('Failed to recalculate layout after recreating worktree panes', 'shellDetection');
191
+ // LogService.getInstance().debug(
192
+ // 'Failed to recalculate layout after recreating worktree panes',
193
+ // 'shellDetection'
194
+ // );
155
195
  }
156
196
  return updatedPanes;
157
197
  }