opencode-navigator 0.19.2 → 0.19.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/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.19.3] - 2026-10-03
6
+
7
+ - Indent grouped Todo, Subagent, Skill, and MCP rows and align MCP server status indicators with their group headings.
8
+ - Place Skill, MCP, and Quick Action bookmarks before item names. Reveal unselected bookmarks on hover or keyboard focus, keep favorites visible, and keep labels steady.
9
+
5
10
  ## [0.19.2] - 2026-10-02
6
11
 
7
12
  - Show MCP group connection states with the same radio-style indicators as individual servers, without Connect/Disconnect labels on group headings.
@@ -59,6 +64,7 @@
59
64
 
60
65
  Earlier release notes are available on [GitHub Releases](https://github.com/St1ggy/opencode-navigator/releases).
61
66
 
67
+ [0.19.3]: https://github.com/St1ggy/opencode-navigator/compare/v0.19.2...v0.19.3
62
68
  [0.19.2]: https://github.com/St1ggy/opencode-navigator/compare/v0.19.1...v0.19.2
63
69
  [0.19.1]: https://github.com/St1ggy/opencode-navigator/compare/v0.19.0...v0.19.1
64
70
  [0.19.0]: https://github.com/St1ggy/opencode-navigator/compare/v0.18.2...v0.19.0
package/README.md CHANGED
@@ -103,6 +103,12 @@ belong to each Skill's exact source path, so assignments survive when a Skill
103
103
  is absent from the current workspace. Filters and Search Everything also match
104
104
  group names; choosing a group heading never runs its Skills.
105
105
 
106
+ Rows beneath group headings are indented in Todo, Subagents, Skills, and MCP.
107
+ Skill, MCP, and Quick Action rows reserve a leading bookmark control: unselected
108
+ bookmarks appear on hover or keyboard focus, while favorites stay visible.
109
+ Labels do not shift when the control appears. MCP server status icons align with
110
+ their group status icons, including when a server has an error detail control.
111
+
106
112
  ![Skill group manager](https://raw.githubusercontent.com/St1ggy/opencode-navigator/main/screenshots/38-skill-groups.png)
107
113
 
108
114
  Search Everything preserves one query across Skills, Subagents, MCP, and Actions:
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,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 createEffect4,createSignal as createSignal9,onCleanup as onCleanup4,createSignal as createSignal10,createSignal as createSignal11,Index,createSignal as createSignal12,onCleanup as onCleanup5,createEffect as createEffect6,onCleanup as onCleanup7,batch as batch2,createEffect as createEffect5,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 createEffect7,createSignal as createSignal15,onCleanup as onCleanup9,Show as Show4,For as For6,For as For9,createEffect as createEffect8,createMemo as createMemo5,onCleanup as onCleanup10,createEffect as createEffect9,createMemo as createMemo6,untrack as untrack2,For as For10,createEffect as createEffect10,createMemo as createMemo9,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo7,createMemo as createMemo8,Show as Show6,onCleanup as onCleanup12,createEffect as createEffect11,onCleanup as onCleanup13,createSignal as createSignal16,createEffect as createEffect12,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 createEffect13,createSignal as createSignal22,createMemo as createMemo13,createSignal as createSignal24,createMemo as createMemo12,For as For13,Show as Show14,Show as Show11,Show as Show12,Show as Show13,createSignal as createSignal23,onCleanup as onCleanup17,For as For14,Show as Show16,createMemo as createMemo15,Show as Show15,createMemo as createMemo14,createSignal as createSignal25,createEffect as createEffect14,onCleanup as onCleanup18,For as For19,Match,Switch,createMemo as createMemo19,onCleanup as onCleanup22,For as For15,Show as Show17,createSignal as createSignal26,createEffect as createEffect15,createMemo as createMemo16,onCleanup as onCleanup19,untrack as untrack5,For as For17,Show as Show20,createEffect as createEffect16,createMemo as createMemo17,createSignal as createSignal27,onCleanup as onCleanup20,untrack as untrack6,For as For16,Show as Show19,Show as Show18,Show as Show24,createEffect as createEffect17,createMemo as createMemo18,createSignal as createSignal28,onCleanup as onCleanup21,untrack as untrack7,For as For18,Show as Show22,Show as Show21,Show as Show23,createEffect as createEffect18,createMemo as createMemo20,onCleanup as onCleanup23,untrack as untrack8,Show as Show25,createMemo as createMemo21,onCleanup as onCleanup24,createSignal as createSignal29,onCleanup as onCleanup25,onMount as onMount7} 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,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 createEffect4,createSignal as createSignal9,onCleanup as onCleanup4,createSignal as createSignal10,createSignal as createSignal11,Index,createSignal as createSignal12,onCleanup as onCleanup5,createEffect as createEffect6,onCleanup as onCleanup7,batch as batch2,createEffect as createEffect5,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 createEffect7,createSignal as createSignal15,onCleanup as onCleanup9,Show as Show4,For as For6,For as For9,createEffect as createEffect8,createMemo as createMemo5,onCleanup as onCleanup10,createEffect as createEffect9,createMemo as createMemo6,untrack as untrack2,For as For10,createEffect as createEffect10,createMemo as createMemo9,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo7,createMemo as createMemo8,Show as Show6,onCleanup as onCleanup12,createEffect as createEffect11,onCleanup as onCleanup13,createSignal as createSignal16,createEffect as createEffect12,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 createEffect13,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,For as For14,Show as Show16,createMemo as createMemo15,Show as Show15,createMemo as createMemo14,createSignal as createSignal26,createEffect as createEffect14,onCleanup as onCleanup18,For as For19,Match,Switch,createMemo as createMemo19,onCleanup as onCleanup22,For as For15,Show as Show17,createSignal as createSignal27,createEffect as createEffect15,createMemo as createMemo16,onCleanup as onCleanup19,untrack as untrack5,For as For17,Show as Show20,createEffect as createEffect16,createMemo as createMemo17,createSignal as createSignal28,onCleanup as onCleanup20,untrack as untrack6,For as For16,Show as Show19,Show as Show18,Show as Show24,createEffect as createEffect17,createMemo as createMemo18,createSignal as createSignal29,onCleanup as onCleanup21,untrack as untrack7,For as For18,Show as Show22,Show as Show21,Show as Show23,createEffect as createEffect18,createMemo as createMemo20,onCleanup as onCleanup23,untrack as untrack8,Show as Show25,createMemo as createMemo21,onCleanup as onCleanup24,createSignal as createSignal30,onCleanup as onCleanup25,onMount as onMount7} from "solid-js"
7
7
  var SIDEBAR_SECTIONS=["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"
@@ -846,6 +846,7 @@ return _el$
846
846
 
847
847
 
848
848
 
849
+
849
850
  function IconControl(props){function mouseOver(event){props.onMouseOver?.()
850
851
  event.stopPropagation()
851
852
  }
@@ -873,7 +874,7 @@ function BookmarkControl(props){const icons=useIcons()
873
874
  return _$createComponent(IconControl,{ref(r$){var _ref$=props.ref
874
875
  typeof _ref$==="function"?_ref$(r$):props.ref=r$
875
876
  },get id(){return props.id
876
- },get icon(){return icons.icon(props.bookmarked?"bookmark":"bookmarkEmpty")
877
+ },get icon(){return _$memo(()=>props.visible?.()===false)()?" ":icons.icon(props.bookmarked?"bookmark":"bookmarkEmpty")
877
878
  },get backgroundColor(){return props.backgroundColor
878
879
  },get foregroundColor(){return props.foregroundColor
879
880
  },get onMouseOver(){return props.onMouseOver
@@ -5808,7 +5809,7 @@ const item=useSidebarItem(props.api,props.interaction,{id:id(),position:()=>prop
5808
5809
  })
5809
5810
  return _$createComponent(SelectionBox,{ref:(node)=>item.ref(node),get id(){return id()
5810
5811
  },height:1,get marginTop(){return props.marginTop
5811
- },flexDirection:"row",justifyContent:"space-between",gap:1,get backgroundColor(){return item.backgroundColor()
5812
+ },flexDirection:"row",justifyContent:"space-between",gap:1,paddingRight:1,get backgroundColor(){return item.backgroundColor()
5812
5813
  },get onMouseOver(){return item.onMouseOver
5813
5814
  },get onMouseOut(){return item.onMouseOut
5814
5815
  },onMouseUp:(event)=>{event.stopPropagation()
@@ -5905,25 +5906,70 @@ return _el$8
5905
5906
  return _el$5
5906
5907
  })()
5907
5908
  }
5908
- function McpRow(props){const icons=useIcons()
5909
- const dialogs=useDialogs(props.api)
5910
- const theme=()=>props.api.theme.current
5909
+
5910
+
5911
+
5912
+ function createSidebarBookmark(input){const{api,interaction,row,position,favorite,disabled,onToggle
5913
+ }=input
5914
+ const id=`${input.id}.favorite`
5915
+ const [rowHovered,setRowHovered]=createSignal23(false)
5916
+ const [controlHovered,setControlHovered]=createSignal23(false)
5917
+ const control=useSidebarItem(api,interaction,{id,position:()=>({...position(),column:0
5918
+ }),disabled,activate:()=>{onToggle()
5919
+ queueMicrotask(()=>interaction?.select(id))
5920
+ }},()=>api.theme.current.warning,"control")
5921
+ const visible=()=>favorite()||row.focused()||control.focused()||rowHovered()||controlHovered()
5922
+ return{onRowOver:()=>{row.onMouseOver()
5923
+ setRowHovered(true)
5924
+ },onRowOut:()=>{row.onMouseOut()
5925
+ setRowHovered(false)
5926
+ },render:()=>_$createComponent(BookmarkControl,{ref:(node)=>control.ref(node),id,get bookmarked(){return favorite()
5927
+ },visible,get backgroundColor(){return _$memo(()=>control.backgroundColor()==="transparent")()?row.backgroundColor():control.backgroundColor()
5928
+ },get foregroundColor(){return _$memo(()=>!!row.focused())()?row.foregroundColor():control.foregroundColor()
5929
+ },onMouseOver:()=>{control.onMouseOver()
5930
+ setControlHovered(true)
5931
+ },onMouseOut:()=>{control.onMouseOut()
5932
+ setControlHovered(false)
5933
+ },onMouseUp:(event)=>control.activate(event)
5934
+ })
5935
+ }}
5936
+
5937
+
5938
+
5939
+
5940
+
5941
+
5942
+ var Context=createContext3()
5943
+ function useSidebarList(){const value=useContext3(Context)
5944
+ if(!value)
5945
+ throw new Error("No sidebar list")
5946
+ return value
5947
+ }
5948
+ function SidebarRowList(props){return _$createComponent(Context.Provider,{get value(){return{api:props.api,interaction:props.interaction,grouped:props.grouped??(()=>false)
5949
+ }},get children(){var _el$=_$createElement("box")
5950
+ _$insert(_el$,()=>props.children)
5951
+ _$effect((_$p)=>_$setProp(_el$,"gap",props.density==="comfortable"?1:0,_$p))
5952
+ return _el$
5953
+ }})
5954
+ }
5955
+ function McpRow(props){const{api,interaction,grouped
5956
+ }=useSidebarList()
5957
+ const icons=useIcons()
5958
+ const dialogs=useDialogs(api)
5959
+ const theme=()=>api.theme.current
5911
5960
  const busy=()=>props.state.status==="loading"||props.state.status==="refreshing"
5912
5961
  const error=()=>props.state.error
5913
5962
  const disabled=()=>props.disabled||busy()
5914
5963
  const id=()=>`${PLUGIN_ID}.mcp.${props.item.name}`
5915
- const row=useSidebarItem(props.api,props.interaction,{id:id(),position:()=>({...props.position,column:0
5964
+ const row=useSidebarItem(api,interaction,{id:id(),position:()=>({...props.position,column:1
5916
5965
  }),disabled,activate:props.onToggle
5917
5966
  })
5918
- const bookmark=useSidebarItem(props.api,props.interaction,{id:`${id()}.favorite`,position:()=>({...props.position,column:2
5919
- }),disabled:()=>props.favoriteDisabled,activate:()=>{props.onToggleFavorite()
5920
- queueMicrotask(()=>props.interaction?.select(`${id()}.favorite`))
5921
- }},()=>theme().warning,"control")
5922
- const info=useSidebarItem(props.api,props.interaction,{id:`${id()}.info`,position:()=>({...props.position,column:1
5967
+ const bookmark=createSidebarBookmark({api,interaction,id:id(),position:()=>props.position,row,favorite:()=>props.favorite,disabled:()=>props.favoriteDisabled,onToggle:props.onToggleFavorite
5968
+ })
5969
+ const info=useSidebarItem(api,interaction,{id:`${id()}.info`,position:()=>({...props.position,column:2
5923
5970
  }),activate:()=>{if(!props.item.error)
5924
5971
  return
5925
- dialogs.open(()=>_$createComponent(McpErrorDialog,{get api(){return props.api
5926
- },get name(){return props.item.name
5972
+ dialogs.open(()=>_$createComponent(McpErrorDialog,{api,get name(){return props.item.name
5927
5973
  },get status(){return props.item.status
5928
5974
  },get error(){return props.item.error
5929
5975
  }}),"medium")
@@ -5931,12 +5977,14 @@ dialogs.open(()=>_$createComponent(McpErrorDialog,{get api(){return props.api
5931
5977
  const nestedBackground=(background)=>background==="transparent"?row.backgroundColor():background
5932
5978
  return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
5933
5979
  },get backgroundColor(){return row.backgroundColor()
5934
- },paddingLeft:1,paddingRight:1,get paddingTop(){return error()?1:0
5980
+ },get paddingLeft(){return grouped()?0:1
5981
+ },paddingRight:1,contentGap:0,get paddingTop(){return error()?1:0
5935
5982
  },get paddingBottom(){return error()?1:0
5936
5983
  },get marginTop(){return props.separator?1:0
5937
- },get onMouseOver(){return row.onMouseOver
5938
- },get onMouseOut(){return row.onMouseOut
5939
- },onMouseDown:(event)=>row.activate(event),get content(){return(()=>{var _el$=_$createElement("text")
5984
+ },get onMouseOver(){return bookmark.onRowOver
5985
+ },get onMouseOut(){return bookmark.onRowOut
5986
+ },onMouseDown:(event)=>row.activate(event),get leading(){return bookmark.render()
5987
+ },get content(){return(()=>{var _el$=_$createElement("text")
5940
5988
  _$setProp(_el$,"flexGrow",1)
5941
5989
  _$setProp(_el$,"wrapMode","none")
5942
5990
  _$insert(_el$,()=>props.item.name)
@@ -5948,8 +5996,6 @@ _$insertNode(_el$2,_el$3)
5948
5996
  _$setProp(_el$2,"flexDirection","row")
5949
5997
  _$setProp(_el$2,"flexShrink",0)
5950
5998
  _$setProp(_el$2,"gap",1)
5951
- _$insertNode(_el$3,_el$4)
5952
- _$insert(_el$4,()=>icons.icon(mcpToggle(props.item.status,busy())))
5953
5999
  _$insert(_el$2,(()=>{var _c$=_$memo(()=>!!props.item.error)
5954
6000
  return()=>_c$()?_$createComponent(IconControl,{ref:(node)=>info.ref(node),get id(){return `${id()}.info`
5955
6001
  },get icon(){return icons.icon("info")
@@ -5959,21 +6005,13 @@ return()=>_c$()?_$createComponent(IconControl,{ref:(node)=>info.ref(node),get id
5959
6005
  },get onMouseOut(){return info.onMouseOut
5960
6006
  },onMouseUp:(event)=>info.activate(event)
5961
6007
  }):null
5962
- })(),null)
5963
- _$insert(_el$2,_$createComponent(BookmarkControl,{ref:(node)=>bookmark.ref(node),get id(){return `${id()}.favorite`
5964
- },get bookmarked(){return props.favorite
5965
- },get backgroundColor(){return nestedBackground(bookmark.backgroundColor())
5966
- },get foregroundColor(){return _$memo(()=>!!row.focused())()?row.foregroundColor():bookmark.foregroundColor()
5967
- },get onMouseOver(){return bookmark.onMouseOver
5968
- },get onMouseOut(){return bookmark.onMouseOut
5969
- },onMouseUp:(event)=>bookmark.activate(event)
5970
- }),null)
5971
- _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():mcpColor(props.api,props.item.status),_$p))
6008
+ })(),_el$3)
6009
+ _$insertNode(_el$3,_el$4)
6010
+ _$insert(_el$4,()=>icons.icon(mcpToggle(props.item.status,busy())))
6011
+ _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():mcpColor(api,props.item.status),_$p))
5972
6012
  return _el$2
5973
6013
  })()
5974
- },get details(){return _$createComponent(RequestErrorRow,{get api(){return props.api
5975
- },get interaction(){return props.interaction
5976
- },get id(){return `${id()}.retry`
6014
+ },get details(){return _$createComponent(RequestErrorRow,{api,interaction,get id(){return `${id()}.retry`
5977
6015
  },get position(){return{...props.position,row:props.position.row + 1,column:0
5978
6016
  }},get state(){return props.state
5979
6017
  },get onRetry(){return props.onRetry
@@ -5991,7 +6029,7 @@ return _el$2
5991
6029
  function SectionFilter(props){const icons=useIcons()
5992
6030
  let input
5993
6031
  let unregisterInput
5994
- const [inputFocused,setInputFocused]=createSignal23(false)
6032
+ const [inputFocused,setInputFocused]=createSignal24(false)
5995
6033
  const theme=()=>props.api.theme.current
5996
6034
  const item=useSidebarItem(props.api,props.interaction,{id:props.id??`filter.${props.placeholder}`,position:()=>props.position??{section:0,row:0,column:0
5997
6035
  },activate:()=>{if(!input)
@@ -6060,16 +6098,6 @@ return _el$3
6060
6098
  }})]
6061
6099
  }})
6062
6100
  }
6063
-
6064
-
6065
-
6066
-
6067
- function SidebarRowList(props){return(()=>{var _el$=_$createElement("box")
6068
- _$insert(_el$,()=>props.children)
6069
- _$effect((_$p)=>_$setProp(_el$,"gap",props.density==="comfortable"?1:0,_$p))
6070
- return _el$
6071
- })()
6072
- }
6073
6101
  function McpSectionContent(props){const model=props.model
6074
6102
  return _$createComponent(SectionRequestBody,{get api(){return props.api
6075
6103
  },get interaction(){return props.interaction
@@ -6095,7 +6123,10 @@ _$insertNode(_el$2,_$createTextNode(`No matching MCP servers`))
6095
6123
  _$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
6096
6124
  return _el$2
6097
6125
  })()
6098
- },get children(){return [_$createComponent(SidebarRowList,{get density(){return props.preferences.rowDensity?.()??"compact"
6126
+ },get children(){return [_$createComponent(SidebarRowList,{get api(){return props.api
6127
+ },get interaction(){return props.interaction
6128
+ },get grouped(){return model.grouped
6129
+ },get density(){return props.preferences.rowDensity?.()??"compact"
6099
6130
  },get children(){return _$createComponent(For13,{get each(){return model.visibility.visible()
6100
6131
  },children:(item,index)=>[_$createComponent(Show14,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
6101
6132
  },get children(){return _$createComponent(McpGroupHeader,{get api(){return props.api
@@ -6108,9 +6139,7 @@ return _el$2
6108
6139
  },get position(){return{section:props.navigationSection,row:9 + index()*3,column:0
6109
6140
  }},onToggle:()=>void props.controller.toggleGroup(item.bucket,model.groupNames(item.bucket),model.target())
6110
6141
  })
6111
- }}),_$createComponent(McpRow,{get api(){return props.api
6112
- },get interaction(){return props.interaction
6113
- },item,get position(){return{section:props.navigationSection,row:10 + index()*3,column:0
6142
+ }}),_$createComponent(McpRow,{item,get position(){return{section:props.navigationSection,row:10 + index()*3,column:0
6114
6143
  }},get state(){return props.controller.serverState(item.name,model.target())
6115
6144
  },get disabled(){return model.bulkRunning()
6116
6145
  },onToggle:()=>void props.controller.toggle(item.name).catch(()=>{}),onRetry:()=>void props.controller.retryServer(item.name,model.target())?.catch(()=>{}),get favorite(){return model.favorites().has(item.name)
@@ -6130,7 +6159,7 @@ return _el$
6130
6159
  }})
6131
6160
  }
6132
6161
  function McpSection(props){const icons=useIcons()
6133
- const [query,setQuery]=createSignal24("")
6162
+ const [query,setQuery]=createSignal25("")
6134
6163
  const model=createMcpSectionModel(props,query)
6135
6164
  const navigationSection=()=>props.navigationSection??6
6136
6165
  const summary=createMemo13(()=>`${model.active()}/${model.list().length}${model.errors() ? ` \xB7 ${model.errors()} ${icons.icon("error")}` : ""}`)
@@ -6165,48 +6194,46 @@ return _$createComponent(SectionWithHeaderAction,{get api(){return props.api
6165
6194
 
6166
6195
 
6167
6196
 
6168
- function QuickActionRow(props){const icons=useIcons()
6169
- const theme=()=>props.api.theme.current
6170
- const [width,setWidth]=createSignal25(0)
6171
- const shortcut=createMemo14(()=>{const bindings=props.api.keymap.getCommandBindings({visibility:"registered",commands:[props.action.command]
6197
+ function QuickActionRow(props){const{api,interaction
6198
+ }=useSidebarList()
6199
+ const icons=useIcons()
6200
+ const theme=()=>api.theme.current
6201
+ const [width,setWidth]=createSignal26(0)
6202
+ const shortcut=createMemo14(()=>{const bindings=api.keymap.getCommandBindings({visibility:"registered",commands:[props.action.command]
6172
6203
  })
6173
- return props.api.keys.formatBindings(bindings.get(props.action.command))
6204
+ return api.keys.formatBindings(bindings.get(props.action.command))
6174
6205
  })
6175
6206
  const visibleShortcut=createMemo14(()=>{const value=shortcut()
6176
- return value&&width()>=Bun.stringWidth(props.action.label) + Bun.stringWidth(value) + 9?value:undefined
6207
+ return value&&width()>=Bun.stringWidth(props.action.label) + Bun.stringWidth(value) + 8?value:undefined
6177
6208
  })
6178
6209
  function run(){if(props.action.command==="session.new"&&props.onNewSession?.())
6179
6210
  return
6180
- const result=props.interaction?props.interaction.dispatchFromReturnTarget(props.action.command):props.api.keymap.dispatchCommand(props.action.command)
6211
+ const result=interaction?interaction.dispatchFromReturnTarget(props.action.command):api.keymap.dispatchCommand(props.action.command)
6181
6212
  if(result.ok)
6182
6213
  return
6183
- props.api.ui.toast({variant:"warning",title:props.action.label,message:`Command is ${result.reason}`,duration:3000
6214
+ api.ui.toast({variant:"warning",title:props.action.label,message:`Command is ${result.reason}`,duration:3000
6184
6215
  })
6185
6216
  }
6186
6217
  const id=()=>`${PLUGIN_ID}.quick-action.${props.action.command}`
6187
- const row=useSidebarItem(props.api,props.interaction,{id:id(),position:()=>props.position,activate:run,disabled:()=>Boolean(props.disabled)
6218
+ const row=useSidebarItem(api,interaction,{id:id(),position:()=>({...props.position,column:1
6219
+ }),activate:run,disabled:()=>Boolean(props.disabled)
6220
+ })
6221
+ const bookmark=createSidebarBookmark({api,interaction,id:id(),position:()=>props.position,row,favorite:()=>props.favorite,disabled:()=>props.favoriteDisabled,onToggle:props.onToggleFavorite
6188
6222
  })
6189
- const favorite=useSidebarItem(props.api,props.interaction,{id:`${id()}.favorite`,position:()=>({...props.position,column:1
6190
- }),disabled:()=>props.favoriteDisabled,activate:()=>{props.onToggleFavorite()
6191
- queueMicrotask(()=>props.interaction?.select(`${id()}.favorite`))
6192
- }},()=>theme().warning,"control")
6193
- const controlBackground=()=>{const background=favorite.backgroundColor()
6194
- return background==="transparent"?row.backgroundColor():background
6195
- }
6196
6223
  return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
6197
6224
  },paddingLeft:1,paddingRight:1,get marginTop(){return props.separator?1:0
6198
6225
  },onSizeChange:function(){setWidth(this.width)
6199
6226
  },get backgroundColor(){return row.backgroundColor()
6200
- },get onMouseOver(){return row.onMouseOver
6201
- },get onMouseOut(){return row.onMouseOut
6227
+ },get onMouseOver(){return bookmark.onRowOver
6228
+ },get onMouseOut(){return bookmark.onRowOut
6202
6229
  },onMouseUp:(event)=>{event.stopPropagation()
6203
6230
  row.activate(event)
6204
- },get leading(){return(()=>{var _el$=_$createElement("text")
6231
+ },get leading(){return [_$memo(()=>bookmark.render()),(()=>{var _el$=_$createElement("text")
6205
6232
  _$setProp(_el$,"flexShrink",0)
6206
6233
  _$insert(_el$,()=>icons.action(props.action.command))
6207
6234
  _$effect((_$p)=>_$setProp(_el$,"fg",props.disabled?theme().textMuted:row.focused()?row.foregroundColor():theme().accent,_$p))
6208
6235
  return _el$
6209
- })()
6236
+ })()]
6210
6237
  },get content(){return(()=>{var _el$2=_$createElement("text")
6211
6238
  _$setProp(_el$2,"flexGrow",1)
6212
6239
  _$setProp(_el$2,"wrapMode","none")
@@ -6232,14 +6259,6 @@ _$effect((_$p)=>_$setProp(_el$4,"fg",row.focused()?row.foregroundColor():theme()
6232
6259
  return _el$4
6233
6260
  })()
6234
6261
  })
6235
- },get trailing(){return _$createComponent(BookmarkControl,{ref:(node)=>favorite.ref(node),get id(){return `${id()}.favorite`
6236
- },get bookmarked(){return props.favorite
6237
- },get backgroundColor(){return controlBackground()
6238
- },get foregroundColor(){return _$memo(()=>!!row.focused())()?row.foregroundColor():favorite.foregroundColor()
6239
- },get onMouseOver(){return favorite.onMouseOver
6240
- },get onMouseOut(){return favorite.onMouseOut
6241
- },onMouseUp:(event)=>favorite.activate(event)
6242
- })
6243
6262
  }})
6244
6263
  }
6245
6264
  function QuickActionsSection(props){const commandRevision=createQuickActionRevision(props.api)
@@ -6257,16 +6276,16 @@ return _$createComponent(Section,{get api(){return props.api
6257
6276
  },sectionId:`${PLUGIN_ID}.section.quick_actions`,get navigationSection(){return navigationSection()
6258
6277
  },title:"QUICK ACTIONS",section:"quick_actions",get summary(){return String(actions().length)
6259
6278
  },get open(){return props.preferences.expanded().quick_actions
6260
- },onToggle:()=>props.preferences.toggleSectionExpanded("quick_actions"),get children(){return [_$createComponent(SidebarRowList,{get density(){return props.preferences.rowDensity?.()??"compact"
6279
+ },onToggle:()=>props.preferences.toggleSectionExpanded("quick_actions"),get children(){return [_$createComponent(SidebarRowList,{get api(){return props.api
6280
+ },get interaction(){return props.interaction
6281
+ },get density(){return props.preferences.rowDensity?.()??"compact"
6261
6282
  },get children(){return [_$createComponent(Show16,{get when(){return actions().length===0
6262
6283
  },get children(){var _el$=_$createElement("text")
6263
6284
  _$insertNode(_el$,_$createTextNode(`No quick actions selected`))
6264
6285
  _$effect((_$p)=>_$setProp(_el$,"fg",props.api.theme.current.textMuted,_$p))
6265
6286
  return _el$
6266
6287
  }}),_$createComponent(For14,{get each(){return visibility.visible()
6267
- },children:(action,index)=>_$createComponent(QuickActionRow,{get api(){return props.api
6268
- },get interaction(){return props.interaction
6269
- },get onNewSession(){return props.onNewSession
6288
+ },children:(action,index)=>_$createComponent(QuickActionRow,{get onNewSession(){return props.onNewSession
6270
6289
  },action,get disabled(){return action.disabled
6271
6290
  },get favorite(){return props.preferences.favoriteQuickActions?.().has(action.command)??false
6272
6291
  },get favoriteDisabled(){return _$memo(()=>!!props.preferences.ready)()?!props.preferences.ready():false
@@ -6445,49 +6464,36 @@ return{target,recent,grouped,list,filtered,visibility,state,useSkill,skillGroup}
6445
6464
 
6446
6465
 
6447
6466
 
6448
- function SkillRow(props){const icons=useIcons()
6449
- const theme=()=>props.api.theme.current
6467
+ function SkillRow(props){const{api,interaction,grouped
6468
+ }=useSidebarList()
6469
+ const icons=useIcons()
6450
6470
  const id=()=>`${PLUGIN_ID}.skill.${props.item.location || props.item.name}`
6451
- const row=useSidebarItem(props.api,props.interaction,{id:id(),position:()=>({...props.position,column:0
6471
+ const row=useSidebarItem(api,interaction,{id:id(),position:()=>({...props.position,column:1
6452
6472
  }),activate:props.onUse
6453
6473
  })
6454
- const favorite=useSidebarItem(props.api,props.interaction,{id:`${id()}.favorite`,position:()=>({...props.position,column:1
6455
- }),disabled:()=>props.favoriteDisabled,activate:()=>{props.onToggleFavorite()
6456
- queueMicrotask(()=>props.interaction?.select(`${id()}.favorite`))
6457
- }},()=>theme().warning,"control")
6458
- const controlBackground=()=>{const background=favorite.backgroundColor()
6459
- return background==="transparent"?row.backgroundColor():background
6460
- }
6474
+ const bookmark=createSidebarBookmark({api,interaction,id:id(),position:()=>props.position,row,favorite:()=>props.favorite,disabled:()=>props.favoriteDisabled,onToggle:props.onToggleFavorite
6475
+ })
6461
6476
  return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
6462
- },paddingLeft:1,paddingRight:1,get marginTop(){return props.separator?1:0
6477
+ },get paddingLeft(){return grouped()?0:1
6478
+ },paddingRight:1,contentGap:0,get marginTop(){return props.separator?1:0
6463
6479
  },get backgroundColor(){return row.backgroundColor()
6464
- },get onMouseOver(){return row.onMouseOver
6465
- },get onMouseOut(){return row.onMouseOut
6466
- },onMouseUp:(event)=>row.activate(event),get leading(){return(()=>{var _el$=_$createElement("text")
6467
- _$setProp(_el$,"flexShrink",0)
6468
- _$insert(_el$,()=>icons.icon(props.recent?"recent":"skills"))
6469
- _$effect((_$p)=>_$setProp(_el$,"fg",row.focused()?row.foregroundColor():theme().accent,_$p))
6480
+ },get onMouseOver(){return bookmark.onRowOver
6481
+ },get onMouseOut(){return bookmark.onRowOut
6482
+ },onMouseUp:(event)=>row.activate(event),get leading(){return bookmark.render()
6483
+ },get content(){return(()=>{var _el$=_$createElement("text")
6484
+ _$setProp(_el$,"flexGrow",1)
6485
+ _$setProp(_el$,"wrapMode","word")
6486
+ _$insert(_el$,(()=>{var _c$=_$memo(()=>!!props.recent)
6487
+ return()=>_c$()?`${icons.icon("recent")} `:""
6488
+ })(),null)
6489
+ _$insert(_el$,()=>props.item.name,null)
6490
+ _$effect((_$p)=>_$setProp(_el$,"fg",row.foregroundColor(),_$p))
6470
6491
  return _el$
6471
6492
  })()
6472
- },get content(){return(()=>{var _el$2=_$createElement("text")
6473
- _$setProp(_el$2,"flexGrow",1)
6474
- _$setProp(_el$2,"wrapMode","word")
6475
- _$insert(_el$2,()=>props.item.name)
6476
- _$effect((_$p)=>_$setProp(_el$2,"fg",row.foregroundColor(),_$p))
6477
- return _el$2
6478
- })()
6479
- },get trailing(){return _$createComponent(BookmarkControl,{ref:(node)=>favorite.ref(node),get id(){return `${id()}.favorite`
6480
- },get bookmarked(){return props.favorite
6481
- },get backgroundColor(){return controlBackground()
6482
- },get foregroundColor(){return _$memo(()=>!!row.focused())()?row.foregroundColor():favorite.foregroundColor()
6483
- },get onMouseOver(){return favorite.onMouseOver
6484
- },get onMouseOut(){return favorite.onMouseOut
6485
- },onMouseUp:(event)=>favorite.activate(event)
6486
- })
6487
6493
  }})
6488
6494
  }
6489
6495
  function SkillsSection(props){const dialogs=useDialogs(props.api)
6490
- const [query,setQuery]=createSignal26("")
6496
+ const [query,setQuery]=createSignal27("")
6491
6497
  const model=createSkillSectionModel(props,query)
6492
6498
  const navigationSection=()=>props.navigationSection??3
6493
6499
  function selectSkill(item){if(!props.preferences.shouldConfirmSkill(item)){model.useSkill(item)
@@ -6526,7 +6532,10 @@ _$insertNode(_el$2,_$createTextNode(`No matching skills`))
6526
6532
  _$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
6527
6533
  return _el$2
6528
6534
  })()
6529
- },get children(){return [_$createComponent(SidebarRowList,{get density(){return props.preferences.rowDensity?.()??"compact"
6535
+ },get children(){return [_$createComponent(SidebarRowList,{get api(){return props.api
6536
+ },get interaction(){return props.interaction
6537
+ },get grouped(){return model.grouped
6538
+ },get density(){return props.preferences.rowDensity?.()??"compact"
6530
6539
  },get children(){return _$createComponent(For15,{get each(){return model.visibility.visible()
6531
6540
  },children:(item,index)=>[_$createComponent(Show17,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
6532
6541
  },get children(){var _el$4=_$createElement("text")
@@ -6541,9 +6550,7 @@ return _p$
6541
6550
  },{e:undefined,t:undefined
6542
6551
  })
6543
6552
  return _el$4
6544
- }}),_$createComponent(SkillRow,{get api(){return props.api
6545
- },get interaction(){return props.interaction
6546
- },item,get position(){return{section:navigationSection(),row:10 + index()*(model.grouped()?2:1),column:0
6553
+ }}),_$createComponent(SkillRow,{item,get position(){return{section:navigationSection(),row:10 + index()*(model.grouped()?2:1),column:0
6547
6554
  }},onUse:()=>selectSkill(item),get recent(){return model.recent().has(item.location)
6548
6555
  },get favorite(){return props.preferences.isFavoriteSkill?.(item)??false
6549
6556
  },get favoriteDisabled(){return props.preferences.ready?.()===false
@@ -6575,8 +6582,8 @@ return _el$
6575
6582
  function createSubagentSectionModel(props){const list=createMemo17(()=>props.controller.list(props.sessionID))
6576
6583
  const recent=createMemo17(()=>props.controller.recent?.(props.sessionID)??[])
6577
6584
  const rows=createMemo17(()=>buildSubagentView(list(),recent()))
6578
- const [query,setQuery]=createSignal27("")
6579
- const [mode,setMode]=createSignal27("all")
6585
+ const [query,setQuery]=createSignal28("")
6586
+ const [mode,setMode]=createSignal28("all")
6580
6587
  const counts=createMemo17(()=>countSubagentView(rows(),query()))
6581
6588
  const tabs=createMemo17(()=>["all","active","recent",...counts().errors>0?["errors"]:[]])
6582
6589
  const filtered=createMemo17(()=>filterSubagentView(rows(),mode(),query()))
@@ -6620,18 +6627,20 @@ return{list,recent,rows,query,setQuery,mode,setMode,counts,tabs,filtered,parentI
6620
6627
 
6621
6628
 
6622
6629
 
6623
- function SubagentRow(props){const icons=useIcons()
6624
- const theme=()=>props.api.theme.current
6630
+ function SubagentRow(props){const{api,interaction
6631
+ }=useSidebarList()
6632
+ const icons=useIcons()
6633
+ const theme=()=>api.theme.current
6625
6634
  const retrying=()=>props.item.status.type==="retry"
6626
6635
  const idle=()=>props.item.status.type==="idle"
6627
6636
  const failed=()=>props.item.run?.outcome==="error"
6628
6637
  const cancelled=()=>props.item.run?.outcome==="cancelled"
6629
6638
  const id=()=>`${PLUGIN_ID}.subagent.${props.item.session.id}`
6630
- const row=useSidebarItem(props.api,props.interaction,{id:id(),position:()=>props.position,activate:props.onOpen
6639
+ const row=useSidebarItem(api,interaction,{id:id(),position:()=>props.position,activate:props.onOpen
6631
6640
  })
6632
6641
  const leadingColor=()=>row.focused()?row.foregroundColor():failed()?theme().error:retrying()||props.item.unavailable?theme().warning:idle()?theme().textMuted:theme().primary
6633
6642
  return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
6634
- },paddingLeft:1,paddingRight:1,get backgroundColor(){return row.backgroundColor()
6643
+ },paddingLeft:2,paddingRight:1,get backgroundColor(){return row.backgroundColor()
6635
6644
  },get onMouseOver(){return row.onMouseOver
6636
6645
  },get onMouseOut(){return row.onMouseOut
6637
6646
  },onMouseDown:(event)=>row.activate(event),get leading(){return(()=>{var _el$=_$createElement("text")
@@ -6688,7 +6697,9 @@ return _el$8
6688
6697
  }})]
6689
6698
  }})
6690
6699
  }
6691
- function SubagentList(props){return _$createComponent(SidebarRowList,{get density(){return props.density
6700
+ function SubagentList(props){return _$createComponent(SidebarRowList,{get api(){return props.api
6701
+ },get interaction(){return props.interaction
6702
+ },get density(){return props.density
6692
6703
  },get children(){return _$createComponent(For16,{get each(){return props.ids
6693
6704
  },children:(id,index)=>{const initial=props.itemById(id)
6694
6705
  const item=()=>props.itemById(id)??initial
@@ -6701,9 +6712,7 @@ _$insert(_el$3,()=>item().group)
6701
6712
  _$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
6702
6713
  return _el$2
6703
6714
  }}),null)
6704
- _$insert(_el$,_$createComponent(SubagentRow,{get api(){return props.api
6705
- },get interaction(){return props.interaction
6706
- },get item(){return item()
6715
+ _$insert(_el$,_$createComponent(SubagentRow,{get item(){return item()
6707
6716
  },get now(){return props.now
6708
6717
  },get position(){return{section:props.navigationSection,row:10 + index(),column:0
6709
6718
  }},onOpen:()=>props.controller.open(id)
@@ -6808,8 +6817,10 @@ return _el$
6808
6817
 
6809
6818
 
6810
6819
 
6811
- function TodoRow(props){const icons=useIcons()
6812
- const theme=()=>props.api.theme.current
6820
+ function TodoRow(props){const{api
6821
+ }=useSidebarList()
6822
+ const icons=useIcons()
6823
+ const theme=()=>api.theme.current
6813
6824
  const done=()=>props.item.status==="completed"
6814
6825
  const active=()=>props.item.status==="in_progress"
6815
6826
  const cancelled=()=>props.item.status==="cancelled"
@@ -6832,6 +6843,7 @@ _$insertNode(_el$,_el$2)
6832
6843
  _$insertNode(_el$,_el$3)
6833
6844
  _$setProp(_el$,"flexDirection","row")
6834
6845
  _$setProp(_el$,"gap",1)
6846
+ _$setProp(_el$,"paddingLeft",2)
6835
6847
  _$setProp(_el$2,"flexShrink",0)
6836
6848
  _$insert(_el$2,()=>icons.icon(done()?"done":active()?"busy":cancelled()?"close":"idle"))
6837
6849
  _$setProp(_el$3,"flexGrow",1)
@@ -6877,7 +6889,9 @@ _$insert(_el$,_$createComponent(Show22,{get when(){return props.view.rows.length
6877
6889
  },get fallback(){return _$createComponent(EmptyTodo,{get api(){return props.api
6878
6890
  },get mode(){return props.mode
6879
6891
  }})
6880
- },get children(){return _$createComponent(SidebarRowList,{get density(){return props.density
6892
+ },get children(){return _$createComponent(SidebarRowList,{get api(){return props.api
6893
+ },get interaction(){return props.interaction
6894
+ },get density(){return props.density
6881
6895
  },get children(){return _$createComponent(For18,{get each(){return props.visibility.visible()
6882
6896
  },children:(row,index)=>{const startsGroup=()=>index()===0||props.visibility.visible()[index()-1].group!==row.group
6883
6897
  return(()=>{var _el$3=_$createElement("box")
@@ -6888,8 +6902,7 @@ _$insert(_el$5,()=>row.group)
6888
6902
  _$effect((_$p)=>_$setProp(_el$4,"fg",props.api.theme.current.textMuted,_$p))
6889
6903
  return _el$4
6890
6904
  }}),null)
6891
- _$insert(_el$3,_$createComponent(TodoRow,{get api(){return props.api
6892
- },get item(){return row.item
6905
+ _$insert(_el$3,_$createComponent(TodoRow,{get item(){return row.item
6893
6906
  }}),null)
6894
6907
  _$effect((_$p)=>_$setProp(_el$3,"marginTop",index()>0&&startsGroup()?1:0,_$p))
6895
6908
  return _el$3
@@ -6944,7 +6957,7 @@ function TodoSection(props){const list=createMemo18(()=>props.controller.list(pr
6944
6957
  const icons=useIcons()
6945
6958
  const unavailable=()=>hostCapabilityUnavailable(props.api,"todo")
6946
6959
  const managed=()=>("guidance" in props.controller)?props.controller:undefined
6947
- const [mode,setMode]=createSignal28("all")
6960
+ const [mode,setMode]=createSignal29("all")
6948
6961
  const targetKey=createMemo18(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
6949
6962
  createEffect17(()=>{targetKey()
6950
6963
  setMode("all")
@@ -7262,7 +7275,7 @@ return false
7262
7275
  }
7263
7276
  function enabled(value){return typeof value==="function"?value():value!==false
7264
7277
  }
7265
- function createV2Keymap(context){const [revision,setRevision]=createSignal29(0)
7278
+ function createV2Keymap(context){const [revision,setRevision]=createSignal30(0)
7266
7279
  const layers=new Map
7267
7280
  let sequence=0
7268
7281
  function layerActive(layer){const mode=layer.mode??"base"
@@ -7555,7 +7568,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
7555
7568
  },interaction,skills,subagents,mcp
7556
7569
  }),_$createComponent(FirstRunWizardPersistence,{api,preferences
7557
7570
  }),_$createComponent(StartupSessionBinding,{api,controller:startup
7558
- }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.19.2"
7571
+ }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.19.3"
7559
7572
  }),_$createComponent(McpPersistence,{api,controller:mcp
7560
7573
  })]
7561
7574
  }})
@@ -7585,12 +7598,12 @@ throw result.error
7585
7598
  }
7586
7599
  return result.data?.type==="text"?result.data.content:undefined
7587
7600
  })
7588
- const versionStatus=createVersionStatus(api,"0.19.2")
7589
- const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.19.2"))
7601
+ const versionStatus=createVersionStatus(api,"0.19.3")
7602
+ const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.19.3"))
7590
7603
  api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7591
7604
  },get multilineCorners(){return preferences.cornerFont
7592
7605
  },get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
7593
- },navigatorVersion:"0.19.2",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7606
+ },navigatorVersion:"0.19.3",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7594
7607
  },get onNavigatorUpdate(){return versionUpdates.navigator
7595
7608
  }})
7596
7609
  }})
@@ -7604,15 +7617,15 @@ return
7604
7617
  return new TextDecoder().decode(await context.client.file.read({location:context.location,path:".opencode/navigator.json"
7605
7618
  }))
7606
7619
  },todo)
7607
- const versionStatus=createVersionStatus(adapter.api,"0.19.2")
7608
- const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.19.2"))
7620
+ const versionStatus=createVersionStatus(adapter.api,"0.19.3")
7621
+ const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.19.3"))
7609
7622
  const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7610
7623
  },get multilineCorners(){return preferences.cornerFont
7611
7624
  },get children(){var _el$=_$createElement("box")
7612
7625
  _$setProp(_el$,"flexDirection","row")
7613
7626
  _$setProp(_el$,"justifyContent","space-between")
7614
7627
  _$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
7615
- },navigatorVersion:"0.19.2",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7628
+ },navigatorVersion:"0.19.3",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7616
7629
  },get onNavigatorUpdate(){return versionUpdates.navigator
7617
7630
  }}),null)
7618
7631
  _$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.19.2",
4
+ "version": "0.19.3",
5
5
  "description": "Search, navigate, and manage OpenCode sessions from the TUI",
6
6
  "type": "module",
7
7
  "packageManager": "bun@1.4.2",