opencode-navigator 0.19.1 → 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 +11 -0
- package/README.md +9 -1
- package/dist/tui.js +185 -166
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
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
|
+
|
|
10
|
+
## [0.19.2] - 2026-10-02
|
|
11
|
+
|
|
12
|
+
- Show MCP group connection states with the same radio-style indicators as individual servers, without Connect/Disconnect labels on group headings.
|
|
13
|
+
|
|
5
14
|
## [0.19.1] - 2026-10-02
|
|
6
15
|
|
|
7
16
|
- Remember the OpenCode 1.x auto-approve mode as a user-wide default for new sessions, including changes made through the host's permission toggle.
|
|
@@ -55,6 +64,8 @@
|
|
|
55
64
|
|
|
56
65
|
Earlier release notes are available on [GitHub Releases](https://github.com/St1ggy/opencode-navigator/releases).
|
|
57
66
|
|
|
67
|
+
[0.19.3]: https://github.com/St1ggy/opencode-navigator/compare/v0.19.2...v0.19.3
|
|
68
|
+
[0.19.2]: https://github.com/St1ggy/opencode-navigator/compare/v0.19.1...v0.19.2
|
|
58
69
|
[0.19.1]: https://github.com/St1ggy/opencode-navigator/compare/v0.19.0...v0.19.1
|
|
59
70
|
[0.19.0]: https://github.com/St1ggy/opencode-navigator/compare/v0.18.2...v0.19.0
|
|
60
71
|
[0.18.2]: https://github.com/St1ggy/opencode-navigator/compare/v0.18.1...v0.18.2
|
package/README.md
CHANGED
|
@@ -89,7 +89,9 @@ Click a group heading (including Favorites or Ungrouped), or focus it and press
|
|
|
89
89
|
`Enter`, to connect its remaining eligible servers. Once none need connecting,
|
|
90
90
|
the same control disconnects its connected servers. This affects the full group
|
|
91
91
|
even when a filter or item limit hides some rows; failed operations retain the
|
|
92
|
-
usual retry control.
|
|
92
|
+
usual retry control. The heading has no action label: its radio-style icon is
|
|
93
|
+
filled only when every server in the group is connected, empty if any still
|
|
94
|
+
needs connecting, and pending while the group changes.
|
|
93
95
|
|
|
94
96
|

|
|
95
97
|
|
|
@@ -101,6 +103,12 @@ belong to each Skill's exact source path, so assignments survive when a Skill
|
|
|
101
103
|
is absent from the current workspace. Filters and Search Everything also match
|
|
102
104
|
group names; choosing a group heading never runs its Skills.
|
|
103
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
|
+
|
|
104
112
|

|
|
105
113
|
|
|
106
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
|
|
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"
|
|
@@ -195,6 +195,12 @@ function mcpGroupToggleAction(items){if(items.some((item)=>mcpToggleAction2(item
|
|
|
195
195
|
return "connect"
|
|
196
196
|
return items.some((item)=>mcpToggleAction2(item.status)==="disconnect")?"disconnect":undefined
|
|
197
197
|
}
|
|
198
|
+
function mcpGroupStatus(items,busy=false){if(busy)
|
|
199
|
+
return "pending"
|
|
200
|
+
if(items.length>0&&items.every((item)=>item.status==="connected"))
|
|
201
|
+
return "connected"
|
|
202
|
+
return items.find((item)=>item.status!=="connected"&&item.status!=="disabled")?.status??"disabled"
|
|
203
|
+
}
|
|
198
204
|
function buildMcpGroupedView(items,favorites,assignments){return items.map((item)=>({...item,assignedGroup:assignments[item.name],bucket:favorites.has(item.name)?"Favorites":assignments[item.name]??"Ungrouped"
|
|
199
205
|
})).sort((left,right)=>{const leftRank=BUCKET_RANK[left.bucket]??1
|
|
200
206
|
const rightRank=BUCKET_RANK[right.bucket]??1
|
|
@@ -840,6 +846,7 @@ return _el$
|
|
|
840
846
|
|
|
841
847
|
|
|
842
848
|
|
|
849
|
+
|
|
843
850
|
function IconControl(props){function mouseOver(event){props.onMouseOver?.()
|
|
844
851
|
event.stopPropagation()
|
|
845
852
|
}
|
|
@@ -867,7 +874,7 @@ function BookmarkControl(props){const icons=useIcons()
|
|
|
867
874
|
return _$createComponent(IconControl,{ref(r$){var _ref$=props.ref
|
|
868
875
|
typeof _ref$==="function"?_ref$(r$):props.ref=r$
|
|
869
876
|
},get id(){return props.id
|
|
870
|
-
},get icon(){return icons.icon(props.bookmarked?"bookmark":"bookmarkEmpty")
|
|
877
|
+
},get icon(){return _$memo(()=>props.visible?.()===false)()?" ":icons.icon(props.bookmarked?"bookmark":"bookmarkEmpty")
|
|
871
878
|
},get backgroundColor(){return props.backgroundColor
|
|
872
879
|
},get foregroundColor(){return props.foregroundColor
|
|
873
880
|
},get onMouseOver(){return props.onMouseOver
|
|
@@ -5687,7 +5694,10 @@ const selected=props.controller.selectedPreset?.(target())
|
|
|
5687
5694
|
return selected&&Object.hasOwn(presets,selected)?selected:matchingMcpPreset(list(),presets)
|
|
5688
5695
|
})
|
|
5689
5696
|
return{target,favorites,groups,grouped,list,groupNames(bucket){return groupItems(bucket).map((item)=>item.name)
|
|
5690
|
-
},
|
|
5697
|
+
},groupStatus(bucket){const items=groupItems(bucket)
|
|
5698
|
+
const operation=bulk()
|
|
5699
|
+
const busy=operation.status==="running"&&"group" in operation&&operation.group===bucket||items.some((item)=>["loading","refreshing"].includes(props.controller.serverState(item.name,target()).status))
|
|
5700
|
+
return mcpGroupStatus(items,busy)
|
|
5691
5701
|
},filtered,visibility,active,state,bulk,bulkRunning,mutationRunning,connectable,disconnectable,errors,presetName
|
|
5692
5702
|
}}
|
|
5693
5703
|
|
|
@@ -5780,15 +5790,26 @@ return _el$2
|
|
|
5780
5790
|
|
|
5781
5791
|
|
|
5782
5792
|
|
|
5783
|
-
|
|
5793
|
+
function mcpColor(api,status){const theme=api.theme.current
|
|
5794
|
+
if(status==="connected")
|
|
5795
|
+
return theme.success
|
|
5796
|
+
if(status==="failed"||status==="needs_client_registration")
|
|
5797
|
+
return theme.error
|
|
5798
|
+
if(status==="needs_auth")
|
|
5799
|
+
return theme.warning
|
|
5800
|
+
return theme.textMuted
|
|
5801
|
+
}
|
|
5802
|
+
function mcpToggle(status,busy){if(busy||status==="pending")
|
|
5803
|
+
return "pending"
|
|
5804
|
+
return status==="connected"?"connected":"disconnected"
|
|
5805
|
+
}
|
|
5784
5806
|
function McpGroupHeader(props){const icons=useIcons()
|
|
5785
|
-
const theme=()=>props.api.theme.current
|
|
5786
5807
|
const id=()=>`${PLUGIN_ID}.mcp.group.${props.bucket}`
|
|
5787
|
-
const item=useSidebarItem(props.api,props.interaction,{id:id(),position:()=>props.position,disabled:()=>props.disabled
|
|
5808
|
+
const item=useSidebarItem(props.api,props.interaction,{id:id(),position:()=>props.position,disabled:()=>props.disabled,activate:props.onToggle
|
|
5788
5809
|
})
|
|
5789
5810
|
return _$createComponent(SelectionBox,{ref:(node)=>item.ref(node),get id(){return id()
|
|
5790
5811
|
},height:1,get marginTop(){return props.marginTop
|
|
5791
|
-
},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()
|
|
5792
5813
|
},get onMouseOver(){return item.onMouseOver
|
|
5793
5814
|
},get onMouseOut(){return item.onMouseOut
|
|
5794
5815
|
},onMouseUp:(event)=>{event.stopPropagation()
|
|
@@ -5802,15 +5823,14 @@ _$setProp(_el$,"wrapMode","none")
|
|
|
5802
5823
|
_$setProp(_el$,"truncate",true)
|
|
5803
5824
|
_$insert(_el$,()=>props.bucket,_el$2)
|
|
5804
5825
|
_$insert(_el$,()=>props.count,_el$3)
|
|
5805
|
-
_$effect((_$p)=>_$setProp(_el$,"fg",item.focused()?item.foregroundColor():theme
|
|
5826
|
+
_$effect((_$p)=>_$setProp(_el$,"fg",item.focused()?item.foregroundColor():props.api.theme.current.textMuted,_$p))
|
|
5806
5827
|
return _el$
|
|
5807
|
-
})(),(()=>{var _el$4=_$createElement("text")
|
|
5828
|
+
})(),(()=>{var _el$4=_$createElement("text"),_el$5=_$createElement("b")
|
|
5829
|
+
_$insertNode(_el$4,_el$5)
|
|
5808
5830
|
_$setProp(_el$4,"flexShrink",0)
|
|
5809
5831
|
_$setProp(_el$4,"wrapMode","none")
|
|
5810
|
-
_$insert(_el$
|
|
5811
|
-
|
|
5812
|
-
})())
|
|
5813
|
-
_$effect((_$p)=>_$setProp(_el$4,"fg",item.focused()?item.foregroundColor():props.disabled?theme().textMuted:theme().accent,_$p))
|
|
5832
|
+
_$insert(_el$5,()=>icons.icon(mcpToggle(props.status,false)))
|
|
5833
|
+
_$effect((_$p)=>_$setProp(_el$4,"fg",item.focused()?item.foregroundColor():mcpColor(props.api,props.status),_$p))
|
|
5814
5834
|
return _el$4
|
|
5815
5835
|
})()]
|
|
5816
5836
|
}})
|
|
@@ -5822,19 +5842,6 @@ return _el$4
|
|
|
5822
5842
|
|
|
5823
5843
|
|
|
5824
5844
|
|
|
5825
|
-
function mcpColor(api,status){const theme=api.theme.current
|
|
5826
|
-
if(status==="connected")
|
|
5827
|
-
return theme.success
|
|
5828
|
-
if(status==="failed"||status==="needs_client_registration")
|
|
5829
|
-
return theme.error
|
|
5830
|
-
if(status==="needs_auth")
|
|
5831
|
-
return theme.warning
|
|
5832
|
-
return theme.textMuted
|
|
5833
|
-
}
|
|
5834
|
-
function mcpToggle(status,busy){if(busy||status==="pending")
|
|
5835
|
-
return "pending"
|
|
5836
|
-
return status==="connected"?"connected":"disconnected"
|
|
5837
|
-
}
|
|
5838
5845
|
|
|
5839
5846
|
|
|
5840
5847
|
|
|
@@ -5899,25 +5906,70 @@ return _el$8
|
|
|
5899
5906
|
return _el$5
|
|
5900
5907
|
})()
|
|
5901
5908
|
}
|
|
5902
|
-
|
|
5903
|
-
|
|
5904
|
-
|
|
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
|
|
5905
5960
|
const busy=()=>props.state.status==="loading"||props.state.status==="refreshing"
|
|
5906
5961
|
const error=()=>props.state.error
|
|
5907
5962
|
const disabled=()=>props.disabled||busy()
|
|
5908
5963
|
const id=()=>`${PLUGIN_ID}.mcp.${props.item.name}`
|
|
5909
|
-
const row=useSidebarItem(
|
|
5964
|
+
const row=useSidebarItem(api,interaction,{id:id(),position:()=>({...props.position,column:1
|
|
5910
5965
|
}),disabled,activate:props.onToggle
|
|
5911
5966
|
})
|
|
5912
|
-
const bookmark=
|
|
5913
|
-
})
|
|
5914
|
-
|
|
5915
|
-
}},()=>theme().warning,"control")
|
|
5916
|
-
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
|
|
5917
5970
|
}),activate:()=>{if(!props.item.error)
|
|
5918
5971
|
return
|
|
5919
|
-
dialogs.open(()=>_$createComponent(McpErrorDialog,{get
|
|
5920
|
-
},get name(){return props.item.name
|
|
5972
|
+
dialogs.open(()=>_$createComponent(McpErrorDialog,{api,get name(){return props.item.name
|
|
5921
5973
|
},get status(){return props.item.status
|
|
5922
5974
|
},get error(){return props.item.error
|
|
5923
5975
|
}}),"medium")
|
|
@@ -5925,12 +5977,14 @@ dialogs.open(()=>_$createComponent(McpErrorDialog,{get api(){return props.api
|
|
|
5925
5977
|
const nestedBackground=(background)=>background==="transparent"?row.backgroundColor():background
|
|
5926
5978
|
return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
|
|
5927
5979
|
},get backgroundColor(){return row.backgroundColor()
|
|
5928
|
-
},
|
|
5980
|
+
},get paddingLeft(){return grouped()?0:1
|
|
5981
|
+
},paddingRight:1,contentGap:0,get paddingTop(){return error()?1:0
|
|
5929
5982
|
},get paddingBottom(){return error()?1:0
|
|
5930
5983
|
},get marginTop(){return props.separator?1:0
|
|
5931
|
-
},get onMouseOver(){return
|
|
5932
|
-
},get onMouseOut(){return
|
|
5933
|
-
},onMouseDown:(event)=>row.activate(event),get
|
|
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")
|
|
5934
5988
|
_$setProp(_el$,"flexGrow",1)
|
|
5935
5989
|
_$setProp(_el$,"wrapMode","none")
|
|
5936
5990
|
_$insert(_el$,()=>props.item.name)
|
|
@@ -5942,8 +5996,6 @@ _$insertNode(_el$2,_el$3)
|
|
|
5942
5996
|
_$setProp(_el$2,"flexDirection","row")
|
|
5943
5997
|
_$setProp(_el$2,"flexShrink",0)
|
|
5944
5998
|
_$setProp(_el$2,"gap",1)
|
|
5945
|
-
_$insertNode(_el$3,_el$4)
|
|
5946
|
-
_$insert(_el$4,()=>icons.icon(mcpToggle(props.item.status,busy())))
|
|
5947
5999
|
_$insert(_el$2,(()=>{var _c$=_$memo(()=>!!props.item.error)
|
|
5948
6000
|
return()=>_c$()?_$createComponent(IconControl,{ref:(node)=>info.ref(node),get id(){return `${id()}.info`
|
|
5949
6001
|
},get icon(){return icons.icon("info")
|
|
@@ -5953,21 +6005,13 @@ return()=>_c$()?_$createComponent(IconControl,{ref:(node)=>info.ref(node),get id
|
|
|
5953
6005
|
},get onMouseOut(){return info.onMouseOut
|
|
5954
6006
|
},onMouseUp:(event)=>info.activate(event)
|
|
5955
6007
|
}):null
|
|
5956
|
-
})(),
|
|
5957
|
-
_$
|
|
5958
|
-
|
|
5959
|
-
|
|
5960
|
-
},get foregroundColor(){return _$memo(()=>!!row.focused())()?row.foregroundColor():bookmark.foregroundColor()
|
|
5961
|
-
},get onMouseOver(){return bookmark.onMouseOver
|
|
5962
|
-
},get onMouseOut(){return bookmark.onMouseOut
|
|
5963
|
-
},onMouseUp:(event)=>bookmark.activate(event)
|
|
5964
|
-
}),null)
|
|
5965
|
-
_$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))
|
|
5966
6012
|
return _el$2
|
|
5967
6013
|
})()
|
|
5968
|
-
},get details(){return _$createComponent(RequestErrorRow,{get
|
|
5969
|
-
},get interaction(){return props.interaction
|
|
5970
|
-
},get id(){return `${id()}.retry`
|
|
6014
|
+
},get details(){return _$createComponent(RequestErrorRow,{api,interaction,get id(){return `${id()}.retry`
|
|
5971
6015
|
},get position(){return{...props.position,row:props.position.row + 1,column:0
|
|
5972
6016
|
}},get state(){return props.state
|
|
5973
6017
|
},get onRetry(){return props.onRetry
|
|
@@ -5985,7 +6029,7 @@ return _el$2
|
|
|
5985
6029
|
function SectionFilter(props){const icons=useIcons()
|
|
5986
6030
|
let input
|
|
5987
6031
|
let unregisterInput
|
|
5988
|
-
const [inputFocused,setInputFocused]=
|
|
6032
|
+
const [inputFocused,setInputFocused]=createSignal24(false)
|
|
5989
6033
|
const theme=()=>props.api.theme.current
|
|
5990
6034
|
const item=useSidebarItem(props.api,props.interaction,{id:props.id??`filter.${props.placeholder}`,position:()=>props.position??{section:0,row:0,column:0
|
|
5991
6035
|
},activate:()=>{if(!input)
|
|
@@ -6054,16 +6098,6 @@ return _el$3
|
|
|
6054
6098
|
}})]
|
|
6055
6099
|
}})
|
|
6056
6100
|
}
|
|
6057
|
-
|
|
6058
|
-
|
|
6059
|
-
|
|
6060
|
-
|
|
6061
|
-
function SidebarRowList(props){return(()=>{var _el$=_$createElement("box")
|
|
6062
|
-
_$insert(_el$,()=>props.children)
|
|
6063
|
-
_$effect((_$p)=>_$setProp(_el$,"gap",props.density==="comfortable"?1:0,_$p))
|
|
6064
|
-
return _el$
|
|
6065
|
-
})()
|
|
6066
|
-
}
|
|
6067
6101
|
function McpSectionContent(props){const model=props.model
|
|
6068
6102
|
return _$createComponent(SectionRequestBody,{get api(){return props.api
|
|
6069
6103
|
},get interaction(){return props.interaction
|
|
@@ -6089,22 +6123,23 @@ _$insertNode(_el$2,_$createTextNode(`No matching MCP servers`))
|
|
|
6089
6123
|
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
6090
6124
|
return _el$2
|
|
6091
6125
|
})()
|
|
6092
|
-
},get children(){return [_$createComponent(SidebarRowList,{get
|
|
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"
|
|
6093
6130
|
},get children(){return _$createComponent(For13,{get each(){return model.visibility.visible()
|
|
6094
6131
|
},children:(item,index)=>[_$createComponent(Show14,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
|
|
6095
6132
|
},get children(){return _$createComponent(McpGroupHeader,{get api(){return props.api
|
|
6096
6133
|
},get interaction(){return props.interaction
|
|
6097
6134
|
},get bucket(){return item.bucket
|
|
6098
6135
|
},get count(){return model.groupNames(item.bucket).length
|
|
6099
|
-
},get
|
|
6136
|
+
},get status(){return model.groupStatus(item.bucket)
|
|
6100
6137
|
},get disabled(){return model.bulkRunning()||model.mutationRunning()
|
|
6101
6138
|
},get marginTop(){return index()>0?1:0
|
|
6102
6139
|
},get position(){return{section:props.navigationSection,row:9 + index()*3,column:0
|
|
6103
6140
|
}},onToggle:()=>void props.controller.toggleGroup(item.bucket,model.groupNames(item.bucket),model.target())
|
|
6104
6141
|
})
|
|
6105
|
-
}}),_$createComponent(McpRow,{get
|
|
6106
|
-
},get interaction(){return props.interaction
|
|
6107
|
-
},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
|
|
6108
6143
|
}},get state(){return props.controller.serverState(item.name,model.target())
|
|
6109
6144
|
},get disabled(){return model.bulkRunning()
|
|
6110
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)
|
|
@@ -6124,7 +6159,7 @@ return _el$
|
|
|
6124
6159
|
}})
|
|
6125
6160
|
}
|
|
6126
6161
|
function McpSection(props){const icons=useIcons()
|
|
6127
|
-
const [query,setQuery]=
|
|
6162
|
+
const [query,setQuery]=createSignal25("")
|
|
6128
6163
|
const model=createMcpSectionModel(props,query)
|
|
6129
6164
|
const navigationSection=()=>props.navigationSection??6
|
|
6130
6165
|
const summary=createMemo13(()=>`${model.active()}/${model.list().length}${model.errors() ? ` \xB7 ${model.errors()} ${icons.icon("error")}` : ""}`)
|
|
@@ -6159,48 +6194,46 @@ return _$createComponent(SectionWithHeaderAction,{get api(){return props.api
|
|
|
6159
6194
|
|
|
6160
6195
|
|
|
6161
6196
|
|
|
6162
|
-
function QuickActionRow(props){const
|
|
6163
|
-
|
|
6164
|
-
const
|
|
6165
|
-
const
|
|
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]
|
|
6166
6203
|
})
|
|
6167
|
-
return
|
|
6204
|
+
return api.keys.formatBindings(bindings.get(props.action.command))
|
|
6168
6205
|
})
|
|
6169
6206
|
const visibleShortcut=createMemo14(()=>{const value=shortcut()
|
|
6170
|
-
return value&&width()>=Bun.stringWidth(props.action.label) + Bun.stringWidth(value) +
|
|
6207
|
+
return value&&width()>=Bun.stringWidth(props.action.label) + Bun.stringWidth(value) + 8?value:undefined
|
|
6171
6208
|
})
|
|
6172
6209
|
function run(){if(props.action.command==="session.new"&&props.onNewSession?.())
|
|
6173
6210
|
return
|
|
6174
|
-
const result=
|
|
6211
|
+
const result=interaction?interaction.dispatchFromReturnTarget(props.action.command):api.keymap.dispatchCommand(props.action.command)
|
|
6175
6212
|
if(result.ok)
|
|
6176
6213
|
return
|
|
6177
|
-
|
|
6214
|
+
api.ui.toast({variant:"warning",title:props.action.label,message:`Command is ${result.reason}`,duration:3000
|
|
6178
6215
|
})
|
|
6179
6216
|
}
|
|
6180
6217
|
const id=()=>`${PLUGIN_ID}.quick-action.${props.action.command}`
|
|
6181
|
-
const row=useSidebarItem(
|
|
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
|
|
6182
6222
|
})
|
|
6183
|
-
const favorite=useSidebarItem(props.api,props.interaction,{id:`${id()}.favorite`,position:()=>({...props.position,column:1
|
|
6184
|
-
}),disabled:()=>props.favoriteDisabled,activate:()=>{props.onToggleFavorite()
|
|
6185
|
-
queueMicrotask(()=>props.interaction?.select(`${id()}.favorite`))
|
|
6186
|
-
}},()=>theme().warning,"control")
|
|
6187
|
-
const controlBackground=()=>{const background=favorite.backgroundColor()
|
|
6188
|
-
return background==="transparent"?row.backgroundColor():background
|
|
6189
|
-
}
|
|
6190
6223
|
return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
|
|
6191
6224
|
},paddingLeft:1,paddingRight:1,get marginTop(){return props.separator?1:0
|
|
6192
6225
|
},onSizeChange:function(){setWidth(this.width)
|
|
6193
6226
|
},get backgroundColor(){return row.backgroundColor()
|
|
6194
|
-
},get onMouseOver(){return
|
|
6195
|
-
},get onMouseOut(){return
|
|
6227
|
+
},get onMouseOver(){return bookmark.onRowOver
|
|
6228
|
+
},get onMouseOut(){return bookmark.onRowOut
|
|
6196
6229
|
},onMouseUp:(event)=>{event.stopPropagation()
|
|
6197
6230
|
row.activate(event)
|
|
6198
|
-
},get leading(){return(()=>{var _el$=_$createElement("text")
|
|
6231
|
+
},get leading(){return [_$memo(()=>bookmark.render()),(()=>{var _el$=_$createElement("text")
|
|
6199
6232
|
_$setProp(_el$,"flexShrink",0)
|
|
6200
6233
|
_$insert(_el$,()=>icons.action(props.action.command))
|
|
6201
6234
|
_$effect((_$p)=>_$setProp(_el$,"fg",props.disabled?theme().textMuted:row.focused()?row.foregroundColor():theme().accent,_$p))
|
|
6202
6235
|
return _el$
|
|
6203
|
-
})()
|
|
6236
|
+
})()]
|
|
6204
6237
|
},get content(){return(()=>{var _el$2=_$createElement("text")
|
|
6205
6238
|
_$setProp(_el$2,"flexGrow",1)
|
|
6206
6239
|
_$setProp(_el$2,"wrapMode","none")
|
|
@@ -6226,14 +6259,6 @@ _$effect((_$p)=>_$setProp(_el$4,"fg",row.focused()?row.foregroundColor():theme()
|
|
|
6226
6259
|
return _el$4
|
|
6227
6260
|
})()
|
|
6228
6261
|
})
|
|
6229
|
-
},get trailing(){return _$createComponent(BookmarkControl,{ref:(node)=>favorite.ref(node),get id(){return `${id()}.favorite`
|
|
6230
|
-
},get bookmarked(){return props.favorite
|
|
6231
|
-
},get backgroundColor(){return controlBackground()
|
|
6232
|
-
},get foregroundColor(){return _$memo(()=>!!row.focused())()?row.foregroundColor():favorite.foregroundColor()
|
|
6233
|
-
},get onMouseOver(){return favorite.onMouseOver
|
|
6234
|
-
},get onMouseOut(){return favorite.onMouseOut
|
|
6235
|
-
},onMouseUp:(event)=>favorite.activate(event)
|
|
6236
|
-
})
|
|
6237
6262
|
}})
|
|
6238
6263
|
}
|
|
6239
6264
|
function QuickActionsSection(props){const commandRevision=createQuickActionRevision(props.api)
|
|
@@ -6251,16 +6276,16 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
6251
6276
|
},sectionId:`${PLUGIN_ID}.section.quick_actions`,get navigationSection(){return navigationSection()
|
|
6252
6277
|
},title:"QUICK ACTIONS",section:"quick_actions",get summary(){return String(actions().length)
|
|
6253
6278
|
},get open(){return props.preferences.expanded().quick_actions
|
|
6254
|
-
},onToggle:()=>props.preferences.toggleSectionExpanded("quick_actions"),get children(){return [_$createComponent(SidebarRowList,{get
|
|
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"
|
|
6255
6282
|
},get children(){return [_$createComponent(Show16,{get when(){return actions().length===0
|
|
6256
6283
|
},get children(){var _el$=_$createElement("text")
|
|
6257
6284
|
_$insertNode(_el$,_$createTextNode(`No quick actions selected`))
|
|
6258
6285
|
_$effect((_$p)=>_$setProp(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
6259
6286
|
return _el$
|
|
6260
6287
|
}}),_$createComponent(For14,{get each(){return visibility.visible()
|
|
6261
|
-
},children:(action,index)=>_$createComponent(QuickActionRow,{get
|
|
6262
|
-
},get interaction(){return props.interaction
|
|
6263
|
-
},get onNewSession(){return props.onNewSession
|
|
6288
|
+
},children:(action,index)=>_$createComponent(QuickActionRow,{get onNewSession(){return props.onNewSession
|
|
6264
6289
|
},action,get disabled(){return action.disabled
|
|
6265
6290
|
},get favorite(){return props.preferences.favoriteQuickActions?.().has(action.command)??false
|
|
6266
6291
|
},get favoriteDisabled(){return _$memo(()=>!!props.preferences.ready)()?!props.preferences.ready():false
|
|
@@ -6439,49 +6464,36 @@ return{target,recent,grouped,list,filtered,visibility,state,useSkill,skillGroup}
|
|
|
6439
6464
|
|
|
6440
6465
|
|
|
6441
6466
|
|
|
6442
|
-
function SkillRow(props){const
|
|
6443
|
-
|
|
6467
|
+
function SkillRow(props){const{api,interaction,grouped
|
|
6468
|
+
}=useSidebarList()
|
|
6469
|
+
const icons=useIcons()
|
|
6444
6470
|
const id=()=>`${PLUGIN_ID}.skill.${props.item.location || props.item.name}`
|
|
6445
|
-
const row=useSidebarItem(
|
|
6471
|
+
const row=useSidebarItem(api,interaction,{id:id(),position:()=>({...props.position,column:1
|
|
6446
6472
|
}),activate:props.onUse
|
|
6447
6473
|
})
|
|
6448
|
-
const
|
|
6449
|
-
})
|
|
6450
|
-
queueMicrotask(()=>props.interaction?.select(`${id()}.favorite`))
|
|
6451
|
-
}},()=>theme().warning,"control")
|
|
6452
|
-
const controlBackground=()=>{const background=favorite.backgroundColor()
|
|
6453
|
-
return background==="transparent"?row.backgroundColor():background
|
|
6454
|
-
}
|
|
6474
|
+
const bookmark=createSidebarBookmark({api,interaction,id:id(),position:()=>props.position,row,favorite:()=>props.favorite,disabled:()=>props.favoriteDisabled,onToggle:props.onToggleFavorite
|
|
6475
|
+
})
|
|
6455
6476
|
return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
|
|
6456
|
-
},
|
|
6477
|
+
},get paddingLeft(){return grouped()?0:1
|
|
6478
|
+
},paddingRight:1,contentGap:0,get marginTop(){return props.separator?1:0
|
|
6457
6479
|
},get backgroundColor(){return row.backgroundColor()
|
|
6458
|
-
},get onMouseOver(){return
|
|
6459
|
-
},get onMouseOut(){return
|
|
6460
|
-
},onMouseUp:(event)=>row.activate(event),get leading(){return
|
|
6461
|
-
_$
|
|
6462
|
-
_$
|
|
6463
|
-
_$
|
|
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))
|
|
6464
6491
|
return _el$
|
|
6465
6492
|
})()
|
|
6466
|
-
},get content(){return(()=>{var _el$2=_$createElement("text")
|
|
6467
|
-
_$setProp(_el$2,"flexGrow",1)
|
|
6468
|
-
_$setProp(_el$2,"wrapMode","word")
|
|
6469
|
-
_$insert(_el$2,()=>props.item.name)
|
|
6470
|
-
_$effect((_$p)=>_$setProp(_el$2,"fg",row.foregroundColor(),_$p))
|
|
6471
|
-
return _el$2
|
|
6472
|
-
})()
|
|
6473
|
-
},get trailing(){return _$createComponent(BookmarkControl,{ref:(node)=>favorite.ref(node),get id(){return `${id()}.favorite`
|
|
6474
|
-
},get bookmarked(){return props.favorite
|
|
6475
|
-
},get backgroundColor(){return controlBackground()
|
|
6476
|
-
},get foregroundColor(){return _$memo(()=>!!row.focused())()?row.foregroundColor():favorite.foregroundColor()
|
|
6477
|
-
},get onMouseOver(){return favorite.onMouseOver
|
|
6478
|
-
},get onMouseOut(){return favorite.onMouseOut
|
|
6479
|
-
},onMouseUp:(event)=>favorite.activate(event)
|
|
6480
|
-
})
|
|
6481
6493
|
}})
|
|
6482
6494
|
}
|
|
6483
6495
|
function SkillsSection(props){const dialogs=useDialogs(props.api)
|
|
6484
|
-
const [query,setQuery]=
|
|
6496
|
+
const [query,setQuery]=createSignal27("")
|
|
6485
6497
|
const model=createSkillSectionModel(props,query)
|
|
6486
6498
|
const navigationSection=()=>props.navigationSection??3
|
|
6487
6499
|
function selectSkill(item){if(!props.preferences.shouldConfirmSkill(item)){model.useSkill(item)
|
|
@@ -6520,7 +6532,10 @@ _$insertNode(_el$2,_$createTextNode(`No matching skills`))
|
|
|
6520
6532
|
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
6521
6533
|
return _el$2
|
|
6522
6534
|
})()
|
|
6523
|
-
},get children(){return [_$createComponent(SidebarRowList,{get
|
|
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"
|
|
6524
6539
|
},get children(){return _$createComponent(For15,{get each(){return model.visibility.visible()
|
|
6525
6540
|
},children:(item,index)=>[_$createComponent(Show17,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
|
|
6526
6541
|
},get children(){var _el$4=_$createElement("text")
|
|
@@ -6535,9 +6550,7 @@ return _p$
|
|
|
6535
6550
|
},{e:undefined,t:undefined
|
|
6536
6551
|
})
|
|
6537
6552
|
return _el$4
|
|
6538
|
-
}}),_$createComponent(SkillRow,{get
|
|
6539
|
-
},get interaction(){return props.interaction
|
|
6540
|
-
},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
|
|
6541
6554
|
}},onUse:()=>selectSkill(item),get recent(){return model.recent().has(item.location)
|
|
6542
6555
|
},get favorite(){return props.preferences.isFavoriteSkill?.(item)??false
|
|
6543
6556
|
},get favoriteDisabled(){return props.preferences.ready?.()===false
|
|
@@ -6569,8 +6582,8 @@ return _el$
|
|
|
6569
6582
|
function createSubagentSectionModel(props){const list=createMemo17(()=>props.controller.list(props.sessionID))
|
|
6570
6583
|
const recent=createMemo17(()=>props.controller.recent?.(props.sessionID)??[])
|
|
6571
6584
|
const rows=createMemo17(()=>buildSubagentView(list(),recent()))
|
|
6572
|
-
const [query,setQuery]=
|
|
6573
|
-
const [mode,setMode]=
|
|
6585
|
+
const [query,setQuery]=createSignal28("")
|
|
6586
|
+
const [mode,setMode]=createSignal28("all")
|
|
6574
6587
|
const counts=createMemo17(()=>countSubagentView(rows(),query()))
|
|
6575
6588
|
const tabs=createMemo17(()=>["all","active","recent",...counts().errors>0?["errors"]:[]])
|
|
6576
6589
|
const filtered=createMemo17(()=>filterSubagentView(rows(),mode(),query()))
|
|
@@ -6614,18 +6627,20 @@ return{list,recent,rows,query,setQuery,mode,setMode,counts,tabs,filtered,parentI
|
|
|
6614
6627
|
|
|
6615
6628
|
|
|
6616
6629
|
|
|
6617
|
-
function SubagentRow(props){const
|
|
6618
|
-
|
|
6630
|
+
function SubagentRow(props){const{api,interaction
|
|
6631
|
+
}=useSidebarList()
|
|
6632
|
+
const icons=useIcons()
|
|
6633
|
+
const theme=()=>api.theme.current
|
|
6619
6634
|
const retrying=()=>props.item.status.type==="retry"
|
|
6620
6635
|
const idle=()=>props.item.status.type==="idle"
|
|
6621
6636
|
const failed=()=>props.item.run?.outcome==="error"
|
|
6622
6637
|
const cancelled=()=>props.item.run?.outcome==="cancelled"
|
|
6623
6638
|
const id=()=>`${PLUGIN_ID}.subagent.${props.item.session.id}`
|
|
6624
|
-
const row=useSidebarItem(
|
|
6639
|
+
const row=useSidebarItem(api,interaction,{id:id(),position:()=>props.position,activate:props.onOpen
|
|
6625
6640
|
})
|
|
6626
6641
|
const leadingColor=()=>row.focused()?row.foregroundColor():failed()?theme().error:retrying()||props.item.unavailable?theme().warning:idle()?theme().textMuted:theme().primary
|
|
6627
6642
|
return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
|
|
6628
|
-
},paddingLeft:
|
|
6643
|
+
},paddingLeft:2,paddingRight:1,get backgroundColor(){return row.backgroundColor()
|
|
6629
6644
|
},get onMouseOver(){return row.onMouseOver
|
|
6630
6645
|
},get onMouseOut(){return row.onMouseOut
|
|
6631
6646
|
},onMouseDown:(event)=>row.activate(event),get leading(){return(()=>{var _el$=_$createElement("text")
|
|
@@ -6682,7 +6697,9 @@ return _el$8
|
|
|
6682
6697
|
}})]
|
|
6683
6698
|
}})
|
|
6684
6699
|
}
|
|
6685
|
-
function SubagentList(props){return _$createComponent(SidebarRowList,{get
|
|
6700
|
+
function SubagentList(props){return _$createComponent(SidebarRowList,{get api(){return props.api
|
|
6701
|
+
},get interaction(){return props.interaction
|
|
6702
|
+
},get density(){return props.density
|
|
6686
6703
|
},get children(){return _$createComponent(For16,{get each(){return props.ids
|
|
6687
6704
|
},children:(id,index)=>{const initial=props.itemById(id)
|
|
6688
6705
|
const item=()=>props.itemById(id)??initial
|
|
@@ -6695,9 +6712,7 @@ _$insert(_el$3,()=>item().group)
|
|
|
6695
6712
|
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
6696
6713
|
return _el$2
|
|
6697
6714
|
}}),null)
|
|
6698
|
-
_$insert(_el$,_$createComponent(SubagentRow,{get
|
|
6699
|
-
},get interaction(){return props.interaction
|
|
6700
|
-
},get item(){return item()
|
|
6715
|
+
_$insert(_el$,_$createComponent(SubagentRow,{get item(){return item()
|
|
6701
6716
|
},get now(){return props.now
|
|
6702
6717
|
},get position(){return{section:props.navigationSection,row:10 + index(),column:0
|
|
6703
6718
|
}},onOpen:()=>props.controller.open(id)
|
|
@@ -6802,8 +6817,10 @@ return _el$
|
|
|
6802
6817
|
|
|
6803
6818
|
|
|
6804
6819
|
|
|
6805
|
-
function TodoRow(props){const
|
|
6806
|
-
|
|
6820
|
+
function TodoRow(props){const{api
|
|
6821
|
+
}=useSidebarList()
|
|
6822
|
+
const icons=useIcons()
|
|
6823
|
+
const theme=()=>api.theme.current
|
|
6807
6824
|
const done=()=>props.item.status==="completed"
|
|
6808
6825
|
const active=()=>props.item.status==="in_progress"
|
|
6809
6826
|
const cancelled=()=>props.item.status==="cancelled"
|
|
@@ -6826,6 +6843,7 @@ _$insertNode(_el$,_el$2)
|
|
|
6826
6843
|
_$insertNode(_el$,_el$3)
|
|
6827
6844
|
_$setProp(_el$,"flexDirection","row")
|
|
6828
6845
|
_$setProp(_el$,"gap",1)
|
|
6846
|
+
_$setProp(_el$,"paddingLeft",2)
|
|
6829
6847
|
_$setProp(_el$2,"flexShrink",0)
|
|
6830
6848
|
_$insert(_el$2,()=>icons.icon(done()?"done":active()?"busy":cancelled()?"close":"idle"))
|
|
6831
6849
|
_$setProp(_el$3,"flexGrow",1)
|
|
@@ -6871,7 +6889,9 @@ _$insert(_el$,_$createComponent(Show22,{get when(){return props.view.rows.length
|
|
|
6871
6889
|
},get fallback(){return _$createComponent(EmptyTodo,{get api(){return props.api
|
|
6872
6890
|
},get mode(){return props.mode
|
|
6873
6891
|
}})
|
|
6874
|
-
},get children(){return _$createComponent(SidebarRowList,{get
|
|
6892
|
+
},get children(){return _$createComponent(SidebarRowList,{get api(){return props.api
|
|
6893
|
+
},get interaction(){return props.interaction
|
|
6894
|
+
},get density(){return props.density
|
|
6875
6895
|
},get children(){return _$createComponent(For18,{get each(){return props.visibility.visible()
|
|
6876
6896
|
},children:(row,index)=>{const startsGroup=()=>index()===0||props.visibility.visible()[index()-1].group!==row.group
|
|
6877
6897
|
return(()=>{var _el$3=_$createElement("box")
|
|
@@ -6882,8 +6902,7 @@ _$insert(_el$5,()=>row.group)
|
|
|
6882
6902
|
_$effect((_$p)=>_$setProp(_el$4,"fg",props.api.theme.current.textMuted,_$p))
|
|
6883
6903
|
return _el$4
|
|
6884
6904
|
}}),null)
|
|
6885
|
-
_$insert(_el$3,_$createComponent(TodoRow,{get
|
|
6886
|
-
},get item(){return row.item
|
|
6905
|
+
_$insert(_el$3,_$createComponent(TodoRow,{get item(){return row.item
|
|
6887
6906
|
}}),null)
|
|
6888
6907
|
_$effect((_$p)=>_$setProp(_el$3,"marginTop",index()>0&&startsGroup()?1:0,_$p))
|
|
6889
6908
|
return _el$3
|
|
@@ -6938,7 +6957,7 @@ function TodoSection(props){const list=createMemo18(()=>props.controller.list(pr
|
|
|
6938
6957
|
const icons=useIcons()
|
|
6939
6958
|
const unavailable=()=>hostCapabilityUnavailable(props.api,"todo")
|
|
6940
6959
|
const managed=()=>("guidance" in props.controller)?props.controller:undefined
|
|
6941
|
-
const [mode,setMode]=
|
|
6960
|
+
const [mode,setMode]=createSignal29("all")
|
|
6942
6961
|
const targetKey=createMemo18(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
|
|
6943
6962
|
createEffect17(()=>{targetKey()
|
|
6944
6963
|
setMode("all")
|
|
@@ -7256,7 +7275,7 @@ return false
|
|
|
7256
7275
|
}
|
|
7257
7276
|
function enabled(value){return typeof value==="function"?value():value!==false
|
|
7258
7277
|
}
|
|
7259
|
-
function createV2Keymap(context){const [revision,setRevision]=
|
|
7278
|
+
function createV2Keymap(context){const [revision,setRevision]=createSignal30(0)
|
|
7260
7279
|
const layers=new Map
|
|
7261
7280
|
let sequence=0
|
|
7262
7281
|
function layerActive(layer){const mode=layer.mode??"base"
|
|
@@ -7549,7 +7568,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
|
|
|
7549
7568
|
},interaction,skills,subagents,mcp
|
|
7550
7569
|
}),_$createComponent(FirstRunWizardPersistence,{api,preferences
|
|
7551
7570
|
}),_$createComponent(StartupSessionBinding,{api,controller:startup
|
|
7552
|
-
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.19.
|
|
7571
|
+
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.19.3"
|
|
7553
7572
|
}),_$createComponent(McpPersistence,{api,controller:mcp
|
|
7554
7573
|
})]
|
|
7555
7574
|
}})
|
|
@@ -7579,12 +7598,12 @@ throw result.error
|
|
|
7579
7598
|
}
|
|
7580
7599
|
return result.data?.type==="text"?result.data.content:undefined
|
|
7581
7600
|
})
|
|
7582
|
-
const versionStatus=createVersionStatus(api,"0.19.
|
|
7583
|
-
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.19.
|
|
7601
|
+
const versionStatus=createVersionStatus(api,"0.19.3")
|
|
7602
|
+
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.19.3"))
|
|
7584
7603
|
api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7585
7604
|
},get multilineCorners(){return preferences.cornerFont
|
|
7586
7605
|
},get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
|
|
7587
|
-
},navigatorVersion:"0.19.
|
|
7606
|
+
},navigatorVersion:"0.19.3",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7588
7607
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7589
7608
|
}})
|
|
7590
7609
|
}})
|
|
@@ -7598,15 +7617,15 @@ return
|
|
|
7598
7617
|
return new TextDecoder().decode(await context.client.file.read({location:context.location,path:".opencode/navigator.json"
|
|
7599
7618
|
}))
|
|
7600
7619
|
},todo)
|
|
7601
|
-
const versionStatus=createVersionStatus(adapter.api,"0.19.
|
|
7602
|
-
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.19.
|
|
7620
|
+
const versionStatus=createVersionStatus(adapter.api,"0.19.3")
|
|
7621
|
+
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.19.3"))
|
|
7603
7622
|
const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7604
7623
|
},get multilineCorners(){return preferences.cornerFont
|
|
7605
7624
|
},get children(){var _el$=_$createElement("box")
|
|
7606
7625
|
_$setProp(_el$,"flexDirection","row")
|
|
7607
7626
|
_$setProp(_el$,"justifyContent","space-between")
|
|
7608
7627
|
_$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
|
|
7609
|
-
},navigatorVersion:"0.19.
|
|
7628
|
+
},navigatorVersion:"0.19.3",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7610
7629
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7611
7630
|
}}),null)
|
|
7612
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.
|
|
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",
|