opencode-navigator 0.21.1 → 0.21.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.
package/dist/tui.js CHANGED
@@ -3,7 +3,7 @@ import {insert as _$insert,setProp as _$setProp,createElement as _$createElement
3
3
 
4
4
 
5
5
 
6
- import {createSignal as createSignal2,createSignal,createEffect,onCleanup,createContext,useContext,createContext as createContext2,createSignal as createSignal3,useContext as useContext2,createEffect as createEffect2,splitProps,untrack,splitProps as splitProps2,For,createEffect as createEffect3,onCleanup as onCleanup2,createEffect as createEffect4,Show,splitProps as splitProps3,createSignal as createSignal4,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup3,batch,createSignal as createSignal8,createSignal as createSignal7,createEffect as createEffect5,createSignal as createSignal9,onCleanup as onCleanup4,createSignal as createSignal10,createSignal as createSignal11,Index,createSignal as createSignal12,onCleanup as onCleanup5,createEffect as createEffect7,onCleanup as onCleanup7,batch as batch2,createEffect as createEffect6,createMemo,createSignal as createSignal13,onCleanup as onCleanup6,onMount,For as For2,For as For3,Show as Show2,createMemo as createMemo2,Show as Show3,createSignal as createSignal14,onCleanup as onCleanup8,For as For4,For as For5,For as For8,createMemo as createMemo4,onMount as onMount3,For as For7,createMemo as createMemo3,onMount as onMount2,Show as Show5,createEffect as createEffect8,createSignal as createSignal15,onCleanup as onCleanup9,Show as Show4,For as For6,For as For9,createEffect as createEffect9,createMemo as createMemo5,onCleanup as onCleanup10,createEffect as createEffect10,createMemo as createMemo6,untrack as untrack2,For as For10,createEffect as createEffect11,createMemo as createMemo8,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo7,Show as Show6,onCleanup as onCleanup12,createEffect as createEffect12,onCleanup as onCleanup13,createSignal as createSignal16,createMemo as createMemo9,createEffect as createEffect13,onCleanup as onCleanup14,onMount as onMount5,onCleanup as onCleanup15,onMount as onMount6,For as For11,createSignal as createSignal17,createSignal as createSignal18,Show as Show7,createSignal as createSignal20,createSignal as createSignal19,onCleanup as onCleanup16,For as For12,Show as Show10,createMemo as createMemo11,createComputed,createMemo as createMemo10,createSignal as createSignal21,untrack as untrack3,Show as Show8,createComputed as createComputed2,untrack as untrack4,Show as Show9,createEffect as createEffect14,createSignal as createSignal22,createMemo as createMemo13,createSignal as createSignal25,createMemo as createMemo12,For as For13,Show as Show14,Show as Show11,Show as Show12,createSignal as createSignal23,createContext as createContext3,useContext as useContext3,Show as Show13,createSignal as createSignal24,onCleanup as onCleanup17,Show as Show17,createSignal as createSignal26,untrack as untrack5,createSignal as createSignal27,createEffect as createEffect15,For as For14,createSignal as createSignal28,onMount as onMount7,Show as Show15,Show as Show16,For as For15,Show as Show19,createMemo as createMemo15,Show as Show18,createMemo as createMemo14,createSignal as createSignal29,createEffect as createEffect16,onCleanup as onCleanup18,For as For20,Match,Switch,createMemo as createMemo19,onCleanup as onCleanup22,For as For16,Show as Show20,createSignal as createSignal30,createEffect as createEffect17,createMemo as createMemo16,onCleanup as onCleanup19,untrack as untrack6,For as For18,Show as Show23,createEffect as createEffect18,createMemo as createMemo17,createSignal as createSignal31,onCleanup as onCleanup20,untrack as untrack7,For as For17,Show as Show22,Show as Show21,Show as Show27,createEffect as createEffect19,createMemo as createMemo18,createSignal as createSignal32,onCleanup as onCleanup21,untrack as untrack8,For as For19,Show as Show25,Show as Show24,Show as Show26,createEffect as createEffect20,createMemo as createMemo20,onCleanup as onCleanup23,untrack as untrack9,Show as Show28,createMemo as createMemo21,onCleanup as onCleanup24,createEffect as createEffect21,onCleanup as onCleanup25,untrack as untrack10,createSignal as createSignal33,onCleanup as onCleanup26,onMount as onMount8} from "solid-js"
6
+ import {createSignal as createSignal2,createSignal,createEffect,onCleanup,createContext,useContext,createContext as createContext2,createSignal as createSignal3,useContext as useContext2,createEffect as createEffect2,splitProps,untrack,splitProps as splitProps2,For,createEffect as createEffect3,onCleanup as onCleanup2,createEffect as createEffect4,Show,splitProps as splitProps3,createSignal as createSignal4,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup3,batch,createSignal as createSignal8,createSignal as createSignal7,createEffect as createEffect5,createSignal as createSignal9,onCleanup as onCleanup4,createSignal as createSignal10,createSignal as createSignal11,Index,createSignal as createSignal12,onCleanup as onCleanup5,createEffect as createEffect7,onCleanup as onCleanup7,batch as batch2,createEffect as createEffect6,createMemo,createSignal as createSignal13,onCleanup as onCleanup6,onMount,For as For2,For as For3,Show as Show2,createMemo as createMemo2,Show as Show3,createSignal as createSignal14,onCleanup as onCleanup8,For as For4,For as For5,For as For8,createMemo as createMemo4,onMount as onMount3,For as For7,createMemo as createMemo3,onMount as onMount2,Show as Show5,createEffect as createEffect8,createSignal as createSignal15,onCleanup as onCleanup9,Show as Show4,For as For6,For as For9,createEffect as createEffect9,createMemo as createMemo5,onCleanup as onCleanup10,createEffect as createEffect10,createMemo as createMemo6,untrack as untrack2,For as For10,createEffect as createEffect11,createMemo as createMemo8,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo7,Show as Show6,onCleanup as onCleanup12,createEffect as createEffect12,onCleanup as onCleanup13,createSignal as createSignal16,createMemo as createMemo9,createEffect as createEffect13,onCleanup as onCleanup14,onMount as onMount5,onCleanup as onCleanup15,onMount as onMount6,For as For11,createSignal as createSignal17,createSignal as createSignal18,Show as Show7,createSignal as createSignal20,createSignal as createSignal19,onCleanup as onCleanup16,For as For12,Show as Show10,createMemo as createMemo11,createComputed,createMemo as createMemo10,createSignal as createSignal21,untrack as untrack3,Show as Show8,createComputed as createComputed2,untrack as untrack4,Show as Show9,createSignal as createSignal23,createEffect as createEffect14,createSignal as createSignal22,on,createMemo as createMemo13,createSignal as createSignal26,createMemo as createMemo12,For as For13,Show as Show14,Show as Show11,Show as Show12,createSignal as createSignal24,createContext as createContext3,useContext as useContext3,Show as Show13,createSignal as createSignal25,onCleanup as onCleanup17,Show as Show19,createSignal as createSignal27,untrack as untrack5,createSignal as createSignal28,createSignal as createSignal29,createEffect as createEffect15,For as For14,Show as Show15,Show as Show16,Show as Show17,Show as Show18,For as For15,Show as Show21,createMemo as createMemo15,Show as Show20,createMemo as createMemo14,createSignal as createSignal30,createEffect as createEffect16,onCleanup as onCleanup18,For as For20,Match,Switch,createMemo as createMemo19,onCleanup as onCleanup22,For as For16,Show as Show22,createSignal as createSignal31,createEffect as createEffect17,createMemo as createMemo16,onCleanup as onCleanup19,untrack as untrack6,For as For18,Show as Show25,createEffect as createEffect18,createMemo as createMemo17,createSignal as createSignal32,onCleanup as onCleanup20,untrack as untrack7,For as For17,Show as Show24,Show as Show23,Show as Show29,createEffect as createEffect19,createMemo as createMemo18,createSignal as createSignal33,onCleanup as onCleanup21,untrack as untrack8,For as For19,Show as Show27,Show as Show26,Show as Show28,createEffect as createEffect20,createMemo as createMemo20,onCleanup as onCleanup23,untrack as untrack9,Show as Show30,createMemo as createMemo21,onCleanup as onCleanup24,createEffect as createEffect21,onCleanup as onCleanup25,untrack as untrack10,createSignal as createSignal34,onCleanup as onCleanup26,onMount as onMount7} from "solid-js"
7
7
  var SIDEBAR_SECTIONS=["limits","todo","subagents","skills","quick_actions","lsp","mcp"]
8
8
  var QUICK_ACTION_IDS=["session.rename","session.timeline","session.copy","session.export","session.compact","session.list","session.new","session.fork","messages.copy","session.first","session.last","session.messages_last_user","session.message.next","session.message.previous","permission.mode"]
9
9
  function preferencesScope(path){return path.worktree||path.directory||"global"
@@ -5464,46 +5464,67 @@ return _el$
5464
5464
 
5465
5465
 
5466
5466
 
5467
+
5468
+
5469
+
5470
+
5471
+
5472
+
5473
+
5467
5474
  var graphemes=new Intl.Segmenter(undefined,{granularity:"grapheme"
5468
5475
  })
5469
- function truncateEnd(value,maxWidth){if(Bun.stringWidth(value)<=maxWidth)
5476
+ function truncateEnd(value,width){if(Bun.stringWidth(value)<=width)
5470
5477
  return value
5471
- if(maxWidth<=0)
5478
+ if(width<=0)
5472
5479
  return ""
5473
- const ellipsis=maxWidth>=3?"...":".".repeat(maxWidth)
5474
- const contentWidth=maxWidth-Bun.stringWidth(ellipsis)
5480
+ const ellipsis=width>=3?"...":".".repeat(width)
5475
5481
  let result=""
5476
5482
  for(const{segment
5477
- } of graphemes.segment(value)){if(Bun.stringWidth(result + segment)>contentWidth)
5483
+ } of graphemes.segment(value)){if(Bun.stringWidth(result + segment)>width-ellipsis.length)
5478
5484
  break
5479
5485
  result += segment
5480
5486
  }
5481
5487
  return result + ellipsis
5482
5488
  }
5489
+ function SectionHeaderControl(props){const [width,setWidth]=createSignal22()
5490
+ const control=useSidebarItem(props.api,props.interaction,{id:props.action.id,position:()=>props.position,disabled:props.action.disabled,activate:props.action.onActivate
5491
+ },()=>props.api.theme.current.accent,"control")
5492
+ createEffect14(on(()=>[props.action.label(),props.resetWidth],()=>setWidth(undefined)))
5493
+ const label=()=>width()===undefined||props.iconOnly?props.action.label():truncateEnd(props.action.label(),width()-2)
5494
+ return _$createComponent(SelectionBox,{ref:(node)=>control.ref(node),get id(){return props.action.id
5495
+ },get iconOnly(){return props.iconOnly
5496
+ },get width(){return props.iconOnly?3:undefined
5497
+ },get flexShrink(){return props.iconOnly?0:1
5498
+ },minWidth:3,overflow:"hidden",get alignItems(){return props.iconOnly?"center":undefined
5499
+ },get backgroundColor(){return control.backgroundColor()
5500
+ },onSizeChange:function(){setWidth(this.width)
5501
+ },get onMouseOver(){return control.onMouseOver
5502
+ },get onMouseOut(){return control.onMouseOut
5503
+ },onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
5504
+ control.activate(event)
5505
+ },get children(){var _el$=_$createElement("text")
5506
+ _$setProp(_el$,"wrapMode","none")
5507
+ _$setProp(_el$,"height",1)
5508
+ _$insert(_el$,label)
5509
+ _$effect((_$p)=>_$setProp(_el$,"fg",control.foregroundColor(),_$p))
5510
+ return _el$
5511
+ }})
5512
+ }
5483
5513
  function Section(props){const icons=useIcons()
5484
- const [actionWidth,setActionWidth]=createSignal22()
5514
+ const [headerWidth,setHeaderWidth]=createSignal23(0)
5485
5515
  const icon=()=>props.section?icons.section(props.section):props.icon
5486
5516
  const theme=()=>props.api.theme.current
5487
5517
  const item=useSidebarItem(props.api,props.interaction,{id:props.sectionId??`section.${props.title}`,position:()=>({section:props.navigationSection??0,row:0,column:0
5488
5518
  }),activate:props.onToggle
5489
5519
  })
5490
- const action=props.headerAction?useSidebarItem(props.api,props.interaction,{id:props.headerAction.id,position:()=>({section:props.navigationSection??0,row:0,column:1
5491
- }),disabled:props.headerAction.disabled,activate:props.headerAction.onActivate
5492
- },()=>theme().accent,"control"):undefined
5493
- createEffect14(()=>{props.headerAction?.label()
5494
- setActionWidth(undefined)
5495
- })
5496
- const actionLabel=()=>{const label=props.headerAction?.label()??""
5497
- const width=actionWidth()
5498
- return width===undefined?label:truncateEnd(label,width-2)
5499
- }
5500
5520
  return(()=>{var _el$=_$createElement("box")
5501
5521
  _$setProp(_el$,"gap",1)
5502
5522
  _$insert(_el$,_$createComponent(SelectionBox,{ref:(node)=>item.ref(node),get id(){return props.sectionId
5503
- },flexDirection:"row",height:1,justifyContent:"space-between",gap:1,paddingLeft:1,paddingRight:1,get backgroundColor(){return item.backgroundColor()
5523
+ },flexDirection:"row",height:1,justifyContent:"space-between",gap:1,get backgroundColor(){return item.backgroundColor()
5504
5524
  },get onMouseOver(){return item.onMouseOver
5505
5525
  },get onMouseOut(){return item.onMouseOut
5506
- },onMouseDown:(event)=>item.activate(event),onSizeChange:()=>setActionWidth(undefined),get children(){return [(()=>{var _el$2=_$createElement("text"),_el$3=_$createElement("span"),_el$4=_$createTextNode(` `),_el$5=_$createElement("span"),_el$6=_$createElement("b")
5526
+ },onMouseDown:(event)=>item.activate(event),onSizeChange:function(){setHeaderWidth(this.width)
5527
+ },get children(){return [(()=>{var _el$2=_$createElement("text"),_el$3=_$createElement("span"),_el$4=_$createTextNode(` `),_el$5=_$createElement("span"),_el$6=_$createElement("b")
5507
5528
  _$insertNode(_el$2,_el$3)
5508
5529
  _$insertNode(_el$2,_el$4)
5509
5530
  _$insertNode(_el$2,_el$5)
@@ -5525,28 +5546,23 @@ return _p$
5525
5546
  },{e:undefined,t:undefined,a:undefined
5526
5547
  })
5527
5548
  return _el$2
5528
- })(),(()=>{var _el$7=_$createElement("box"),_el$8=_$createElement("text")
5529
- _$insertNode(_el$7,_el$8)
5549
+ })(),(()=>{var _el$7=_$createElement("box")
5530
5550
  _$setProp(_el$7,"flexDirection","row")
5531
5551
  _$setProp(_el$7,"gap",1)
5532
5552
  _$setProp(_el$7,"flexGrow",1)
5533
5553
  _$setProp(_el$7,"minWidth",0)
5534
5554
  _$setProp(_el$7,"justifyContent","flex-end")
5535
- _$insert(_el$7,_$createComponent(Show9,{when:action,children:(control)=>_$createComponent(SelectionBox,{ref:(node)=>control().ref(node),get id(){return props.headerAction?.id
5536
- },flexShrink:1,minWidth:3,overflow:"hidden",get backgroundColor(){return control().backgroundColor()
5537
- },onSizeChange:function(){setActionWidth(this.width)
5538
- },get onMouseOver(){return control().onMouseOver
5539
- },get onMouseOut(){return control().onMouseOut
5540
- },onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
5541
- control().activate(event)
5542
- },get children(){var _el$9=_$createElement("text")
5543
- _$setProp(_el$9,"wrapMode","none")
5544
- _$setProp(_el$9,"height",1)
5545
- _$insert(_el$9,actionLabel)
5546
- _$effect((_$p)=>_$setProp(_el$9,"fg",control().foregroundColor(),_$p))
5547
- return _el$9
5548
- }})
5549
- }),_el$8)
5555
+ _$insert(_el$7,()=>props.headerControls,null)
5556
+ _$insert(_el$7,_$createComponent(Show9,{get when(){return props.headerAction
5557
+ },children:(action)=>_$createComponent(SectionHeaderControl,{get api(){return props.api
5558
+ },get interaction(){return props.interaction
5559
+ },get action(){return action()
5560
+ },get resetWidth(){return headerWidth()
5561
+ },get position(){return{section:props.navigationSection??0,row:0,column:1
5562
+ }}})
5563
+ }),null)
5564
+ _$insert(_el$7,_$createComponent(Show9,{get when(){return props.summary
5565
+ },get children(){var _el$8=_$createElement("text")
5550
5566
  _$setProp(_el$8,"wrapMode","none")
5551
5567
  _$setProp(_el$8,"truncate",true)
5552
5568
  _$setProp(_el$8,"height",1)
@@ -5557,6 +5573,8 @@ _v$5!==_p$.t&&(_p$.t=_$setProp(_el$8,"flexShrink",_v$5,_p$.t))
5557
5573
  return _p$
5558
5574
  },{e:undefined,t:undefined
5559
5575
  })
5576
+ return _el$8
5577
+ }}),null)
5560
5578
  return _el$7
5561
5579
  })()]
5562
5580
  }}),null)
@@ -5851,8 +5869,8 @@ return _el$5
5851
5869
  function createSidebarBookmark(input){const{api,interaction,row,position,favorite,disabled,onToggle
5852
5870
  }=input
5853
5871
  const id=`${input.id}.favorite`
5854
- const [rowHovered,setRowHovered]=createSignal23(false)
5855
- const [controlHovered,setControlHovered]=createSignal23(false)
5872
+ const [rowHovered,setRowHovered]=createSignal24(false)
5873
+ const [controlHovered,setControlHovered]=createSignal24(false)
5856
5874
  const control=useSidebarItem(api,interaction,{id,position:()=>({...position(),column:0
5857
5875
  }),disabled,activate:()=>{onToggle()
5858
5876
  queueMicrotask(()=>interaction?.select(id))
@@ -5968,7 +5986,7 @@ return _el$2
5968
5986
  function SectionFilter(props){const icons=useIcons()
5969
5987
  let input
5970
5988
  let unregisterInput
5971
- const [inputFocused,setInputFocused]=createSignal24(false)
5989
+ const [inputFocused,setInputFocused]=createSignal25(false)
5972
5990
  const theme=()=>props.api.theme.current
5973
5991
  const item=useSidebarItem(props.api,props.interaction,{id:props.id??`filter.${props.placeholder}`,position:()=>props.position??{section:0,row:0,column:0
5974
5992
  },activate:()=>{if(!input)
@@ -6098,7 +6116,7 @@ return _el$
6098
6116
  }})
6099
6117
  }
6100
6118
  function McpSection(props){const icons=useIcons()
6101
- const [query,setQuery]=createSignal25("")
6119
+ const [query,setQuery]=createSignal26("")
6102
6120
  const model=createMcpSectionModel(props,query)
6103
6121
  const navigationSection=()=>props.navigationSection??6
6104
6122
  const summary=createMemo13(()=>`${model.active()}/${model.list().length}${model.errors() ? ` \xB7 ${model.errors()} ${icons.icon("error")}` : ""}`)
@@ -6185,6 +6203,10 @@ return _$createComponent(SectionWithHeaderAction,{get api(){return props.api
6185
6203
 
6186
6204
 
6187
6205
 
6206
+
6207
+
6208
+
6209
+
6188
6210
 
6189
6211
 
6190
6212
 
@@ -6194,7 +6216,7 @@ function QuickActionRow(props){const{api,interaction
6194
6216
  }=useSidebarList()
6195
6217
  const icons=useIcons()
6196
6218
  const theme=()=>api.theme.current
6197
- const [width,setWidth]=createSignal29(0)
6219
+ const [width,setWidth]=createSignal30(0)
6198
6220
  const shortcut=createMemo14(()=>{const bindings=api.keymap.getCommandBindings({visibility:"registered",commands:[props.action.command]
6199
6221
  })
6200
6222
  return api.keys.formatBindings(bindings.get(props.action.command))
@@ -6238,7 +6260,7 @@ _$insert(_el$2,()=>props.action.label)
6238
6260
  _$effect((_$p)=>_$setProp(_el$2,"fg",row.foregroundColor(),_$p))
6239
6261
  return _el$2
6240
6262
  })()
6241
- },get metadata(){return _$createComponent(Show18,{get when(){return visibleShortcut()
6263
+ },get metadata(){return _$createComponent(Show20,{get when(){return visibleShortcut()
6242
6264
  },children:(value)=>(()=>{var _el$3=_$createElement("text")
6243
6265
  _$setProp(_el$3,"flexShrink",0)
6244
6266
  _$setProp(_el$3,"wrapMode","none")
@@ -6247,7 +6269,7 @@ _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme()
6247
6269
  return _el$3
6248
6270
  })()
6249
6271
  })
6250
- },get details(){return _$createComponent(Show18,{get when(){return props.disabled
6272
+ },get details(){return _$createComponent(Show20,{get when(){return props.disabled
6251
6273
  },children:(reason)=>(()=>{var _el$4=_$createElement("text")
6252
6274
  _$setProp(_el$4,"wrapMode","word")
6253
6275
  _$insert(_el$4,reason)
@@ -6275,7 +6297,7 @@ return _$createComponent(Section,{get api(){return props.api
6275
6297
  },onToggle:()=>props.preferences.toggleSectionExpanded("quick_actions"),get children(){return [_$createComponent(SidebarRowList,{get api(){return props.api
6276
6298
  },get interaction(){return props.interaction
6277
6299
  },get density(){return props.preferences.rowDensity?.()??"compact"
6278
- },get children(){return [_$createComponent(Show19,{get when(){return actions().length===0
6300
+ },get children(){return [_$createComponent(Show21,{get when(){return actions().length===0
6279
6301
  },get children(){var _el$=_$createElement("text")
6280
6302
  _$insertNode(_el$,_$createTextNode(`No quick actions selected`))
6281
6303
  _$effect((_$p)=>_$setProp(_el$,"fg",props.api.theme.current.textMuted,_$p))
@@ -6489,7 +6511,7 @@ return _el$
6489
6511
  }})
6490
6512
  }
6491
6513
  function SkillsSection(props){const dialogs=useDialogs(props.api)
6492
- const [query,setQuery]=createSignal30("")
6514
+ const [query,setQuery]=createSignal31("")
6493
6515
  const model=createSkillSectionModel(props,query)
6494
6516
  const navigationSection=()=>props.navigationSection??3
6495
6517
  function selectSkill(item){if(!props.preferences.shouldConfirmSkill(item)){model.useSkill(item)
@@ -6522,7 +6544,7 @@ _$insert(_el$,_$createComponent(SectionFilter,{get api(){return props.api
6522
6544
  }},get query(){return query()
6523
6545
  },placeholder:"Filter skills...",onInput:setQuery
6524
6546
  }),null)
6525
- _$insert(_el$,_$createComponent(Show20,{get when(){return model.filtered().length>0
6547
+ _$insert(_el$,_$createComponent(Show22,{get when(){return model.filtered().length>0
6526
6548
  },get fallback(){return(()=>{var _el$2=_$createElement("text")
6527
6549
  _$insertNode(_el$2,_$createTextNode(`No matching skills`))
6528
6550
  _$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
@@ -6533,7 +6555,7 @@ return _el$2
6533
6555
  },get grouped(){return model.grouped
6534
6556
  },get density(){return props.preferences.rowDensity?.()??"compact"
6535
6557
  },get children(){return _$createComponent(For16,{get each(){return model.visibility.visible()
6536
- },children:(item,index)=>[_$createComponent(Show20,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
6558
+ },children:(item,index)=>[_$createComponent(Show22,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
6537
6559
  },get children(){var _el$4=_$createElement("text")
6538
6560
  _$setProp(_el$4,"height",1)
6539
6561
  _$setProp(_el$4,"wrapMode","none")
@@ -6578,8 +6600,8 @@ return _el$
6578
6600
  function createSubagentSectionModel(props){const list=createMemo17(()=>props.controller.list(props.sessionID))
6579
6601
  const recent=createMemo17(()=>props.controller.recent?.(props.sessionID)??[])
6580
6602
  const rows=createMemo17(()=>buildSubagentView(list(),recent()))
6581
- const [query,setQuery]=createSignal31("")
6582
- const [mode,setMode]=createSignal31("all")
6603
+ const [query,setQuery]=createSignal32("")
6604
+ const [mode,setMode]=createSignal32("all")
6583
6605
  const counts=createMemo17(()=>countSubagentView(rows(),query()))
6584
6606
  const tabs=createMemo17(()=>["all","active","recent",...counts().errors>0?["errors"]:[]])
6585
6607
  const filtered=createMemo17(()=>filterSubagentView(rows(),mode(),query()))
@@ -6660,7 +6682,7 @@ return()=>_c$()?`${props.item.run.startedBeforeObservation ? `${icons.icon("rece
6660
6682
  _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme().textMuted,_$p))
6661
6683
  return _el$3
6662
6684
  })()
6663
- },get details(){return [_$createComponent(Show21,{get when(){return props.item.run?.errorMessage
6685
+ },get details(){return [_$createComponent(Show23,{get when(){return props.item.run?.errorMessage
6664
6686
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createTextNode(`: `)
6665
6687
  _$insertNode(_el$4,_el$5)
6666
6688
  _$setProp(_el$4,"wrapMode","word")
@@ -6668,12 +6690,12 @@ _$insert(_el$4,()=>cancelled()?"Cancelled":"Error",_el$5)
6668
6690
  _$insert(_el$4,()=>props.item.run?.errorMessage,null)
6669
6691
  _$effect((_$p)=>_$setProp(_el$4,"fg",row.focused()?row.foregroundColor():failed()?theme().error:theme().textMuted,_$p))
6670
6692
  return _el$4
6671
- }}),_$createComponent(Show21,{get when(){return props.item.unavailable
6693
+ }}),_$createComponent(Show23,{get when(){return props.item.unavailable
6672
6694
  },get children(){var _el$6=_$createElement("text")
6673
6695
  _$insertNode(_el$6,_$createTextNode(`Worker status unavailable`))
6674
6696
  _$effect((_$p)=>_$setProp(_el$6,"fg",theme().warning,_$p))
6675
6697
  return _el$6
6676
- }}),_$createComponent(Show21,{get when(){return _$memo(()=>props.item.status.type==="retry")()?props.item.status:undefined
6698
+ }}),_$createComponent(Show23,{get when(){return _$memo(()=>props.item.status.type==="retry")()?props.item.status:undefined
6677
6699
  },children:(status)=>(()=>{var _el$0=_$createElement("text"),_el$1=_$createTextNode(`Retry #`),_el$10=_$createTextNode(` \xB7 `),_el$11=_$createTextNode(`s \xB7 `)
6678
6700
  _$insertNode(_el$0,_el$1)
6679
6701
  _$insertNode(_el$0,_el$10)
@@ -6685,7 +6707,7 @@ _$insert(_el$0,()=>status().message,null)
6685
6707
  _$effect((_$p)=>_$setProp(_el$0,"fg",row.focused()?row.foregroundColor():theme().warning,_$p))
6686
6708
  return _el$0
6687
6709
  })()
6688
- }),_$createComponent(Show21,{get when(){return _$memo(()=>!!idle())()&&!props.item.run?.errorMessage
6710
+ }),_$createComponent(Show23,{get when(){return _$memo(()=>!!idle())()&&!props.item.run?.errorMessage
6689
6711
  },get children(){var _el$8=_$createElement("text")
6690
6712
  _$insertNode(_el$8,_$createTextNode(`Finished`))
6691
6713
  _$effect((_$p)=>_$setProp(_el$8,"fg",theme().textMuted,_$p))
@@ -6701,7 +6723,7 @@ function SubagentList(props){return _$createComponent(SidebarRowList,{get api(){
6701
6723
  const item=()=>props.itemById(id)??initial
6702
6724
  const startsGroup=()=>index()===0||props.visible[index()-1]?.group!==item().group
6703
6725
  return(()=>{var _el$=_$createElement("box")
6704
- _$insert(_el$,_$createComponent(Show22,{get when(){return startsGroup()
6726
+ _$insert(_el$,_$createComponent(Show24,{get when(){return startsGroup()
6705
6727
  },get children(){var _el$2=_$createElement("text"),_el$3=_$createElement("b")
6706
6728
  _$insertNode(_el$2,_el$3)
6707
6729
  _$insert(_el$3,()=>item().group)
@@ -6727,7 +6749,7 @@ return _$createComponent(Section,{get api(){return props.api
6727
6749
  },sectionId:`${PLUGIN_ID}.section.subagents`,get navigationSection(){return navigationSection()
6728
6750
  },title:"SUBAGENTS",section:"subagents",get summary(){return `${model.list().length} active \xB7 ${model.recent().length} recent`
6729
6751
  },get open(){return props.preferences.expanded().subagents
6730
- },onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(Show23,{get when(){return model.parentID()
6752
+ },onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(Show25,{get when(){return model.parentID()
6731
6753
  },children:(id)=>_$createComponent(McpBulkAction,{get api(){return props.api
6732
6754
  },get interaction(){return props.interaction
6733
6755
  },id:`${PLUGIN_ID}.subagents.parent`,get position(){return{section:navigationSection(),row:1,column:0
@@ -6761,7 +6783,7 @@ _$insert(_el$2,_$createComponent(For18,{get each(){return model.tabs()
6761
6783
  },onActivate:()=>model.setMode(value)
6762
6784
  })
6763
6785
  }))
6764
- _$insert(_el$,_$createComponent(Show23,{get when(){return model.filtered().length===0
6786
+ _$insert(_el$,_$createComponent(Show25,{get when(){return model.filtered().length===0
6765
6787
  },get children(){var _el$3=_$createElement("text")
6766
6788
  _$insertNode(_el$3,_$createTextNode(`No matching subagents`))
6767
6789
  _$effect((_$p)=>_$setProp(_el$3,"fg",props.api.theme.current.textMuted,_$p))
@@ -6845,7 +6867,7 @@ _$insert(_el$2,()=>icons.icon(done()?"done":active()?"busy":cancelled()?"close":
6845
6867
  _$setProp(_el$3,"flexGrow",1)
6846
6868
  _$setProp(_el$3,"wrapMode","word")
6847
6869
  _$insert(_el$3,()=>props.item.content)
6848
- _$insert(_el$,_$createComponent(Show24,{get when(){return props.item.priority==="high"||props.item.priority==="medium"||props.item.priority==="low"
6870
+ _$insert(_el$,_$createComponent(Show26,{get when(){return props.item.priority==="high"||props.item.priority==="medium"||props.item.priority==="low"
6849
6871
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b"),_el$6=_$createTextNode(` `)
6850
6872
  _$insertNode(_el$4,_el$5)
6851
6873
  _$setProp(_el$4,"width",2)
@@ -6881,7 +6903,7 @@ _$insert(_el$2,_$createComponent(For19,{each:["all","active","finished"],childre
6881
6903
  },onActivate:()=>props.setMode(value)
6882
6904
  })
6883
6905
  }))
6884
- _$insert(_el$,_$createComponent(Show25,{get when(){return props.view.rows.length>0
6906
+ _$insert(_el$,_$createComponent(Show27,{get when(){return props.view.rows.length>0
6885
6907
  },get fallback(){return _$createComponent(EmptyTodo,{get api(){return props.api
6886
6908
  },get mode(){return props.mode
6887
6909
  }})
@@ -6891,7 +6913,7 @@ _$insert(_el$,_$createComponent(Show25,{get when(){return props.view.rows.length
6891
6913
  },get children(){return _$createComponent(For19,{get each(){return props.visibility.visible()
6892
6914
  },children:(row,index)=>{const startsGroup=()=>index()===0||props.visibility.visible()[index()-1].group!==row.group
6893
6915
  return(()=>{var _el$3=_$createElement("box")
6894
- _$insert(_el$3,_$createComponent(Show25,{get when(){return startsGroup()
6916
+ _$insert(_el$3,_$createComponent(Show27,{get when(){return startsGroup()
6895
6917
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b")
6896
6918
  _$insertNode(_el$4,_el$5)
6897
6919
  _$insert(_el$5,()=>row.group)
@@ -6928,7 +6950,7 @@ return _el$6
6928
6950
 
6929
6951
 
6930
6952
  function TodoGuidanceControl(props){const state=()=>props.controller.guidance(props.sessionID)
6931
- return _$createComponent(Show26,{get when(){return state().available
6953
+ return _$createComponent(Show28,{get when(){return state().available
6932
6954
  },get children(){var _el$=_$createElement("box")
6933
6955
  _$insert(_el$,_$createComponent(SectionTab,{get api(){return props.api
6934
6956
  },get interaction(){return props.interaction
@@ -6938,7 +6960,7 @@ _$insert(_el$,_$createComponent(SectionTab,{get api(){return props.api
6938
6960
  },get disabled(){return state().saving
6939
6961
  },onActivate:()=>void props.controller.setGuidance(props.sessionID,!state().enabled)
6940
6962
  }),null)
6941
- _$insert(_el$,_$createComponent(Show26,{get when(){return state().error
6963
+ _$insert(_el$,_$createComponent(Show28,{get when(){return state().error
6942
6964
  },children:(message)=>(()=>{var _el$2=_$createElement("text")
6943
6965
  _$setProp(_el$2,"wrapMode","word")
6944
6966
  _$insert(_el$2,message)
@@ -6953,7 +6975,7 @@ function TodoSection(props){const list=createMemo18(()=>props.controller.list(pr
6953
6975
  const icons=useIcons()
6954
6976
  const unavailable=()=>hostCapabilityUnavailable(props.api,"todo")
6955
6977
  const managed=()=>("guidance" in props.controller)?props.controller:undefined
6956
- const [mode,setMode]=createSignal32("all")
6978
+ const [mode,setMode]=createSignal33("all")
6957
6979
  const targetKey=createMemo18(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
6958
6980
  createEffect19(()=>{targetKey()
6959
6981
  setMode("all")
@@ -6976,10 +6998,10 @@ return _$createComponent(Section,{get api(){return props.api
6976
6998
  },sectionId:`${PLUGIN_ID}.section.todo`,get navigationSection(){return navigationSection()
6977
6999
  },title:"TODO",section:"todo",get summary(){return _$memo(()=>!!(unavailable()||managed()?.missing(props.sessionID)))()?"\u2014":`${view().counts.completed}/${list().length}`
6978
7000
  },get open(){return props.preferences.expanded().todo
6979
- },onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show27,{get when(){return unavailable()
7001
+ },onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show29,{get when(){return unavailable()
6980
7002
  },get fallback(){return(()=>{var _el$=_$createElement("box")
6981
7003
  _$setProp(_el$,"gap",1)
6982
- _$insert(_el$,_$createComponent(Show27,{get when(){return managed()?.guidance(props.sessionID).available
7004
+ _$insert(_el$,_$createComponent(Show29,{get when(){return managed()?.guidance(props.sessionID).available
6983
7005
  },get children(){return _$createComponent(TodoGuidanceControl,{get api(){return props.api
6984
7006
  },get controller(){return managed()
6985
7007
  },get sessionID(){return props.sessionID
@@ -6987,7 +7009,7 @@ _$insert(_el$,_$createComponent(Show27,{get when(){return managed()?.guidance(pr
6987
7009
  },get navigationSection(){return navigationSection()
6988
7010
  }})
6989
7011
  }}),null)
6990
- _$insert(_el$,_$createComponent(Show27,{get when(){return managed()?.missing(props.sessionID)
7012
+ _$insert(_el$,_$createComponent(Show29,{get when(){return managed()?.missing(props.sessionID)
6991
7013
  },get fallback(){return _$createComponent(SectionRequestBody,{get api(){return props.api
6992
7014
  },get interaction(){return props.interaction
6993
7015
  },id:`${PLUGIN_ID}.retry.todo`,get position(){return{section:navigationSection(),row:1,column:0
@@ -7131,7 +7153,7 @@ _$setProp(_el$2,"flexDirection","row")
7131
7153
  _$setProp(_el$2,"justifyContent","space-between")
7132
7154
  _$setProp(_el$2,"gap",1)
7133
7155
  _$setProp(_el$3,"flexGrow",1)
7134
- _$insert(_el$3,_$createComponent(Show28,{get when(){return props.preferences.showSessionTitle()
7156
+ _$insert(_el$3,_$createComponent(Show30,{get when(){return props.preferences.showSessionTitle()
7135
7157
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b")
7136
7158
  _$insertNode(_el$4,_el$5)
7137
7159
  _$setProp(_el$4,"wrapMode","word")
@@ -7139,7 +7161,7 @@ _$insert(_el$5,()=>props.title)
7139
7161
  _$effect((_$p)=>_$setProp(_el$4,"fg",theme().text,_$p))
7140
7162
  return _el$4
7141
7163
  }}),null)
7142
- _$insert(_el$3,_$createComponent(Show28,{get when(){return _$memo(()=>!!props.preferences.showSessionDate())()&&created()
7164
+ _$insert(_el$3,_$createComponent(Show30,{get when(){return _$memo(()=>!!props.preferences.showSessionDate())()&&created()
7143
7165
  },children:(value)=>(()=>{var _el$6=_$createElement("text")
7144
7166
  _$insert(_el$6,value)
7145
7167
  _$effect((_$p)=>_$setProp(_el$6,"fg",theme().textMuted,_$p))
@@ -7292,7 +7314,7 @@ return false
7292
7314
  }
7293
7315
  function enabled(value){return typeof value==="function"?value():value!==false
7294
7316
  }
7295
- function createV2Keymap(context){const [revision,setRevision]=createSignal33(0)
7317
+ function createV2Keymap(context){const [revision,setRevision]=createSignal34(0)
7296
7318
  const layers=new Map
7297
7319
  let sequence=0
7298
7320
  function layerActive(layer){const mode=layer.mode??"base"
@@ -7405,7 +7427,7 @@ function createV2UI(context){let dialogOpen=false
7405
7427
  function DialogPrompt(props){let active=true
7406
7428
  onCleanup26(()=>{active=false
7407
7429
  })
7408
- onMount8(async ()=>{const value=await context.ui.dialog.prompt({title:props.title,placeholder:props.placeholder,value:props.value
7430
+ onMount7(async ()=>{const value=await context.ui.dialog.prompt({title:props.title,placeholder:props.placeholder,value:props.value
7409
7431
  })
7410
7432
  if(!active)
7411
7433
  return
@@ -7419,7 +7441,7 @@ return _$createElement("box")
7419
7441
  function DialogConfirm(props){let active=true
7420
7442
  onCleanup26(()=>{active=false
7421
7443
  })
7422
- onMount8(async ()=>{const confirmed=await context.ui.dialog.confirm({title:props.title,message:props.message
7444
+ onMount7(async ()=>{const confirmed=await context.ui.dialog.confirm({title:props.title,message:props.message
7423
7445
  })
7424
7446
  if(!active)
7425
7447
  return
@@ -7564,8 +7586,8 @@ const preferences=createPreferencesController(api,config,createPreferencesStore(
7564
7586
  const limitsPath=import.meta.url.includes("/dist/tui.js")?"./provider-limits.js":"../provider-limits"
7565
7587
  const limitsModule=await import(limitsPath)
7566
7588
  const LimitsSection=limitsModule.ProviderLimitsSection
7567
- const{controller:limits,codex,accountSource,selectModel,capabilities
7568
- }=limitsModule.createProviderQuotaIntegration(api,preferences,"0.21.1",hostContext)
7589
+ const{controller:limits,codex,accountSource,selectModel,modelSelection
7590
+ }=limitsModule.createProviderQuotaIntegration(api,preferences,"0.21.3",hostContext)
7569
7591
  const mcp=createMcpController(api,preferences.persistMcp,preferences)
7570
7592
  const interaction=createSidebarInteraction(api,()=>openKeyboardHelp(api,preferences.lspIconStyle,preferences.cornerFont))
7571
7593
  const startup=createStartupSessionController(api,preferences)
@@ -7593,7 +7615,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
7593
7615
  },interaction,skills,subagents,mcp
7594
7616
  }),_$createComponent(FirstRunWizardPersistence,{api,preferences
7595
7617
  }),_$createComponent(StartupSessionBinding,{api,controller:startup
7596
- }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.21.1"
7618
+ }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.21.3"
7597
7619
  }),_$createComponent(McpPersistence,{api,controller:mcp
7598
7620
  })]
7599
7621
  }})
@@ -7606,7 +7628,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
7606
7628
  },sidebar_content(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7607
7629
  },get multilineCorners(){return preferences.cornerFont
7608
7630
  },get children(){return _$createComponent(SidebarContent,{api,get onNewSession(){return startup.handleNewSession
7609
- },mcp,limitsSection:(navigationSection)=>_$createComponent(LimitsSection,{api,preferences,interaction,controller:limits,codex,capabilities,navigationSection
7631
+ },mcp,limitsSection:(navigationSection)=>_$createComponent(LimitsSection,{api,preferences,interaction,controller:limits,codex,modelSelection,navigationSection
7610
7632
  }),todo,subagents,skills,preferences,interaction,get sessionID(){return props.session_id
7611
7633
  }})
7612
7634
  }})
@@ -7624,12 +7646,12 @@ throw result.error
7624
7646
  }
7625
7647
  return result.data?.type==="text"?result.data.content:undefined
7626
7648
  })
7627
- const versionStatus=createVersionStatus(api,"0.21.1")
7628
- const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.1"))
7649
+ const versionStatus=createVersionStatus(api,"0.21.3")
7650
+ const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.3"))
7629
7651
  api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7630
7652
  },get multilineCorners(){return preferences.cornerFont
7631
7653
  },get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
7632
- },navigatorVersion:"0.21.1",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7654
+ },navigatorVersion:"0.21.3",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7633
7655
  },get onNavigatorUpdate(){return versionUpdates.navigator
7634
7656
  }})
7635
7657
  }})
@@ -7643,15 +7665,15 @@ return
7643
7665
  return new TextDecoder().decode(await context.client.file.read({location:context.location,path:".opencode/navigator.json"
7644
7666
  }))
7645
7667
  },todo,context)
7646
- const versionStatus=createVersionStatus(adapter.api,"0.21.1")
7647
- const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.1"))
7668
+ const versionStatus=createVersionStatus(adapter.api,"0.21.3")
7669
+ const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.3"))
7648
7670
  const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7649
7671
  },get multilineCorners(){return preferences.cornerFont
7650
7672
  },get children(){var _el$=_$createElement("box")
7651
7673
  _$setProp(_el$,"flexDirection","row")
7652
7674
  _$setProp(_el$,"justifyContent","space-between")
7653
7675
  _$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
7654
- },navigatorVersion:"0.21.1",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7676
+ },navigatorVersion:"0.21.3",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7655
7677
  },get onNavigatorUpdate(){return versionUpdates.navigator
7656
7678
  }}),null)
7657
7679
  _$insert(_el$,_$createComponent(SettingsFooterButton,{get api(){return adapter.api
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "opencode-navigator",
4
- "version": "0.21.1",
4
+ "version": "0.21.3",
5
5
  "description": "Search, navigate, and manage OpenCode sessions from the TUI",
6
6
  "type": "module",
7
7
  "packageManager": "bun@1.4.2",