opencode-navigator 0.18.0 → 0.18.1
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 +6 -0
- package/README.md +6 -0
- package/dist/tui.js +48 -29
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## [0.18.1] - 2026-10-01
|
|
6
|
+
|
|
7
|
+
- Show calm Todo setup guidance in OpenCode 2.x when Navigator's server plugin is absent, without a request error or Retry control. Actual server failures still offer Retry.
|
|
8
|
+
- Keep Quick Action names readable in narrow sidebars by placing unavailable reasons below them and showing shortcuts only when they fit.
|
|
9
|
+
|
|
5
10
|
## [0.18.0] - 2026-10-01
|
|
6
11
|
|
|
7
12
|
- Add durable per-session Todo lists to OpenCode 2.x through a separately configured Navigator server plugin and an agent Todo tool.
|
|
@@ -36,6 +41,7 @@
|
|
|
36
41
|
|
|
37
42
|
Earlier release notes are available on [GitHub Releases](https://github.com/St1ggy/opencode-navigator/releases).
|
|
38
43
|
|
|
44
|
+
[0.18.1]: https://github.com/St1ggy/opencode-navigator/compare/v0.18.0...v0.18.1
|
|
39
45
|
[0.18.0]: https://github.com/St1ggy/opencode-navigator/compare/v0.17.3...v0.18.0
|
|
40
46
|
[0.17.3]: https://github.com/St1ggy/opencode-navigator/compare/v0.17.2...v0.17.3
|
|
41
47
|
[0.17.2]: https://github.com/St1ggy/opencode-navigator/compare/v0.17.1...v0.17.2
|
package/README.md
CHANGED
|
@@ -189,6 +189,12 @@ and update in the sidebar when the agent calls `navigator_todo_write`. The
|
|
|
189
189
|
starts **Off**: tasks and the agent tool work without adding Todo instructions
|
|
190
190
|
to the model's context. OpenCode 1.x continues to show the host's Todo list.
|
|
191
191
|
|
|
192
|
+
If you use both OpenCode 1.x and 2.x with the same global `opencode.json`, keep
|
|
193
|
+
that shared server config compatible with 1.x. Place the server-plugin entry
|
|
194
|
+
in a separate JSON file and set `OPENCODE_CONFIG` to its path **only when
|
|
195
|
+
launching OpenCode 2.x**. The TUI configuration in `cli.json` remains separate;
|
|
196
|
+
the OpenCode 1.x launch must not load Navigator's 2.x server plugin.
|
|
197
|
+
|
|
192
198
|
### Install the corner font
|
|
193
199
|
|
|
194
200
|
**Required for rounded multiline selections in Nerd Font mode.** Run the font
|
package/dist/tui.js
CHANGED
|
@@ -2,7 +2,7 @@ import {insert as _$insert,setProp as _$setProp,createElement as _$createElement
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
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,For as For10,createEffect as createEffect9,createMemo as createMemo8,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo6,createMemo as createMemo7,Show as Show6,onCleanup as onCleanup12,createSignal as createSignal16,createEffect as createEffect10,onCleanup as onCleanup13,onMount as onMount5,onCleanup as onCleanup14,onMount as onMount6,For as For11,createSignal as createSignal17,createSignal as createSignal18,Show as Show7,createSignal as createSignal20,createSignal as createSignal19,onCleanup as onCleanup15,For as For12,Show as Show10,createMemo as createMemo10,createComputed,createMemo as createMemo9,createSignal as createSignal21,untrack as untrack2,Show as Show8,createComputed as createComputed2,untrack as untrack3,Show as Show9,createEffect as createEffect11,createSignal as createSignal22,createMemo as createMemo12,createSignal as createSignal24,createMemo as createMemo11,For as For13,Show as Show13,Show as Show11,Show as Show12,createSignal as createSignal23,onCleanup as onCleanup16,For as For14,Show as Show15,createMemo as createMemo14,Show as Show14,createMemo as createMemo13,createEffect as createEffect12,onCleanup as onCleanup17,For as For19,Match,Switch,createMemo as createMemo18,onCleanup as onCleanup21,For as For15,Show as Show16,createSignal as
|
|
5
|
+
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,For as For10,createEffect as createEffect9,createMemo as createMemo8,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo6,createMemo as createMemo7,Show as Show6,onCleanup as onCleanup12,createSignal as createSignal16,createEffect as createEffect10,onCleanup as onCleanup13,onMount as onMount5,onCleanup as onCleanup14,onMount as onMount6,For as For11,createSignal as createSignal17,createSignal as createSignal18,Show as Show7,createSignal as createSignal20,createSignal as createSignal19,onCleanup as onCleanup15,For as For12,Show as Show10,createMemo as createMemo10,createComputed,createMemo as createMemo9,createSignal as createSignal21,untrack as untrack2,Show as Show8,createComputed as createComputed2,untrack as untrack3,Show as Show9,createEffect as createEffect11,createSignal as createSignal22,createMemo as createMemo12,createSignal as createSignal24,createMemo as createMemo11,For as For13,Show as Show13,Show as Show11,Show as Show12,createSignal as createSignal23,onCleanup as onCleanup16,For as For14,Show as Show15,createMemo as createMemo14,Show as Show14,createMemo as createMemo13,createSignal as createSignal25,createEffect as createEffect12,onCleanup as onCleanup17,For as For19,Match,Switch,createMemo as createMemo18,onCleanup as onCleanup21,For as For15,Show as Show16,createSignal as createSignal26,createEffect as createEffect13,createMemo as createMemo15,onCleanup as onCleanup18,untrack as untrack4,For as For17,Show as Show19,createEffect as createEffect14,createMemo as createMemo16,createSignal as createSignal27,onCleanup as onCleanup19,untrack as untrack5,For as For16,Show as Show18,Show as Show17,Show as Show23,createEffect as createEffect15,createMemo as createMemo17,createSignal as createSignal28,onCleanup as onCleanup20,untrack as untrack6,For as For18,Show as Show21,Show as Show20,Show as Show22,createEffect as createEffect16,createMemo as createMemo19,onCleanup as onCleanup22,untrack as untrack7,Show as Show24,createMemo as createMemo20,onCleanup as onCleanup23,createSignal as createSignal29,onCleanup as onCleanup24,onMount as onMount7} from "solid-js"
|
|
6
6
|
var SIDEBAR_SECTIONS=["todo","subagents","skills","quick_actions","lsp","mcp"]
|
|
7
7
|
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"]
|
|
8
8
|
function preferencesScope(path){return path.worktree||path.directory||"global"
|
|
@@ -2640,10 +2640,13 @@ var NavigatorTodoRpc={id:"opencode-navigator.todo",methods:{list:{input:{type:"o
|
|
|
2640
2640
|
},output
|
|
2641
2641
|
}},events:{updated:{schema:{type:"object",properties:{sessionID,todos,guidance:{type:"boolean"}},required:["sessionID","todos","guidance"],additionalProperties:false
|
|
2642
2642
|
}}}};
|
|
2643
|
+
function isMissingServer(error){return typeof error==="object"&&error!==null&&"type" in error&&error.type==="rpc.unavailable"
|
|
2644
|
+
}
|
|
2643
2645
|
function createNavigatorTodoController(context,api){const rpc=context.client.rpc(NavigatorTodoRpc)
|
|
2644
2646
|
const [sessions,setSessions]=createSignal11({})
|
|
2645
2647
|
const [saving,setSaving]=createSignal11({})
|
|
2646
2648
|
const [errors,setErrors]=createSignal11({})
|
|
2649
|
+
const [missing,setMissing]=createSignal11({})
|
|
2647
2650
|
const requests=createRequestState(api.lifecycle.signal)
|
|
2648
2651
|
const refreshing=new Map
|
|
2649
2652
|
const revisions=new Map
|
|
@@ -2663,11 +2666,15 @@ const requestState=requests.start(current.key,"refresh Navigator todos",current.
|
|
|
2663
2666
|
if(!requestState)
|
|
2664
2667
|
return pending
|
|
2665
2668
|
const request=rpc.list({sessionID},{location:current.routing,signal:requestState.signal}).then((value)=>{const state=normalizeTodoState(value)
|
|
2666
|
-
if(requestState.isCurrent()
|
|
2669
|
+
if(requestState.isCurrent()){setMissing((values)=>({...values,[current.key]:false}))
|
|
2670
|
+
if((revisions.get(current.key)??0)===revision)
|
|
2667
2671
|
set(current.key,state)
|
|
2672
|
+
}
|
|
2668
2673
|
requestState.succeed()
|
|
2669
2674
|
return state
|
|
2670
|
-
}).catch((error)=>{requestState.
|
|
2675
|
+
}).catch((error)=>{if(requestState.isCurrent()&&!requestState.signal.aborted)
|
|
2676
|
+
setMissing((values)=>({...values,[current.key]:isMissingServer(error)}))
|
|
2677
|
+
requestState.fail(error)
|
|
2671
2678
|
throw error
|
|
2672
2679
|
}).finally(()=>{requestState.finish()
|
|
2673
2680
|
if(refreshing.get(current.key)===request)
|
|
@@ -2688,6 +2695,7 @@ set(current.key,normalizeTodoState(event.data))
|
|
|
2688
2695
|
api.lifecycle.onDispose(unsubscribe)
|
|
2689
2696
|
return{target,list(sessionID){return sessions()[target(sessionID).key]?.todos??[]
|
|
2690
2697
|
},refresh,state(sessionID){return requests.state(target(sessionID).key)
|
|
2698
|
+
},missing(sessionID){return missing()[target(sessionID).key]??false
|
|
2691
2699
|
},retry(sessionID){return refresh(sessionID,true)
|
|
2692
2700
|
},guidance(sessionID){const key=target(sessionID).key
|
|
2693
2701
|
return{enabled:sessions()[key]?.guidance??false,saving:saving()[key]??false,error:errors()[key],available:key in sessions()
|
|
@@ -6083,10 +6091,14 @@ return _$createComponent(SectionWithHeaderAction,{get api(){return props.api
|
|
|
6083
6091
|
|
|
6084
6092
|
function QuickActionRow(props){const icons=useIcons()
|
|
6085
6093
|
const theme=()=>props.api.theme.current
|
|
6094
|
+
const [width,setWidth]=createSignal25(0)
|
|
6086
6095
|
const shortcut=createMemo13(()=>{const bindings=props.api.keymap.getCommandBindings({visibility:"registered",commands:[props.action.command]
|
|
6087
6096
|
})
|
|
6088
6097
|
return props.api.keys.formatBindings(bindings.get(props.action.command))
|
|
6089
6098
|
})
|
|
6099
|
+
const visibleShortcut=createMemo13(()=>{const value=shortcut()
|
|
6100
|
+
return value&&width()>=Bun.stringWidth(props.action.label) + Bun.stringWidth(value) + 9?value:undefined
|
|
6101
|
+
})
|
|
6090
6102
|
function run(){if(props.action.command==="session.new"&&props.onNewSession?.())
|
|
6091
6103
|
return
|
|
6092
6104
|
const result=props.interaction?props.interaction.dispatchFromReturnTarget(props.action.command):props.api.keymap.dispatchCommand(props.action.command)
|
|
@@ -6107,6 +6119,7 @@ return background==="transparent"?row.backgroundColor():background
|
|
|
6107
6119
|
}
|
|
6108
6120
|
return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
|
|
6109
6121
|
},paddingLeft:1,paddingRight:1,get marginTop(){return props.separator?1:0
|
|
6122
|
+
},onSizeChange:function(){setWidth(this.width)
|
|
6110
6123
|
},get backgroundColor(){return row.backgroundColor()
|
|
6111
6124
|
},get onMouseOver(){return row.onMouseOver
|
|
6112
6125
|
},get onMouseOut(){return row.onMouseOut
|
|
@@ -6120,14 +6133,11 @@ return _el$
|
|
|
6120
6133
|
_$setProp(_el$2,"flexGrow",1)
|
|
6121
6134
|
_$setProp(_el$2,"wrapMode","none")
|
|
6122
6135
|
_$setProp(_el$2,"truncate",true)
|
|
6123
|
-
_$insert(_el$2,()=>props.action.label
|
|
6124
|
-
_$insert(_el$2,(()=>{var _c$=_$memo(()=>!!props.disabled)
|
|
6125
|
-
return()=>_c$()?` \xB7 ${props.disabled}`:""
|
|
6126
|
-
})(),null)
|
|
6136
|
+
_$insert(_el$2,()=>props.action.label)
|
|
6127
6137
|
_$effect((_$p)=>_$setProp(_el$2,"fg",row.foregroundColor(),_$p))
|
|
6128
6138
|
return _el$2
|
|
6129
6139
|
})()
|
|
6130
|
-
},get metadata(){return _$createComponent(Show14,{get when(){return
|
|
6140
|
+
},get metadata(){return _$createComponent(Show14,{get when(){return visibleShortcut()
|
|
6131
6141
|
},children:(value)=>(()=>{var _el$3=_$createElement("text")
|
|
6132
6142
|
_$setProp(_el$3,"flexShrink",0)
|
|
6133
6143
|
_$setProp(_el$3,"wrapMode","none")
|
|
@@ -6136,6 +6146,14 @@ _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme()
|
|
|
6136
6146
|
return _el$3
|
|
6137
6147
|
})()
|
|
6138
6148
|
})
|
|
6149
|
+
},get details(){return _$createComponent(Show14,{get when(){return props.disabled
|
|
6150
|
+
},children:(reason)=>(()=>{var _el$4=_$createElement("text")
|
|
6151
|
+
_$setProp(_el$4,"wrapMode","word")
|
|
6152
|
+
_$insert(_el$4,reason)
|
|
6153
|
+
_$effect((_$p)=>_$setProp(_el$4,"fg",row.focused()?row.foregroundColor():theme().textMuted,_$p))
|
|
6154
|
+
return _el$4
|
|
6155
|
+
})()
|
|
6156
|
+
})
|
|
6139
6157
|
},get trailing(){return _$createComponent(BookmarkControl,{ref:(node)=>favorite.ref(node),get id(){return `${id()}.favorite`
|
|
6140
6158
|
},get bookmarked(){return props.favorite
|
|
6141
6159
|
},get backgroundColor(){return controlBackground()
|
|
@@ -6392,7 +6410,7 @@ return _el$2
|
|
|
6392
6410
|
}})
|
|
6393
6411
|
}
|
|
6394
6412
|
function SkillsSection(props){const dialogs=useDialogs(props.api)
|
|
6395
|
-
const [query,setQuery]=
|
|
6413
|
+
const [query,setQuery]=createSignal26("")
|
|
6396
6414
|
const model=createSkillSectionModel(props,query)
|
|
6397
6415
|
const navigationSection=()=>props.navigationSection??3
|
|
6398
6416
|
function selectSkill(item){if(!props.preferences.shouldConfirmSkill(item)){model.useSkill(item)
|
|
@@ -6467,8 +6485,8 @@ return _el$
|
|
|
6467
6485
|
function createSubagentSectionModel(props){const list=createMemo16(()=>props.controller.list(props.sessionID))
|
|
6468
6486
|
const recent=createMemo16(()=>props.controller.recent?.(props.sessionID)??[])
|
|
6469
6487
|
const rows=createMemo16(()=>buildSubagentView(list(),recent()))
|
|
6470
|
-
const [query,setQuery]=
|
|
6471
|
-
const [mode,setMode]=
|
|
6488
|
+
const [query,setQuery]=createSignal27("")
|
|
6489
|
+
const [mode,setMode]=createSignal27("all")
|
|
6472
6490
|
const counts=createMemo16(()=>countSubagentView(rows(),query()))
|
|
6473
6491
|
const tabs=createMemo16(()=>["all","active","recent",...counts().errors>0?["errors"]:[]])
|
|
6474
6492
|
const filtered=createMemo16(()=>filterSubagentView(rows(),mode(),query()))
|
|
@@ -6836,7 +6854,7 @@ function TodoSection(props){const list=createMemo17(()=>props.controller.list(pr
|
|
|
6836
6854
|
const icons=useIcons()
|
|
6837
6855
|
const unavailable=()=>hostCapabilityUnavailable(props.api,"todo")
|
|
6838
6856
|
const managed=()=>("guidance" in props.controller)?props.controller:undefined
|
|
6839
|
-
const [mode,setMode]=
|
|
6857
|
+
const [mode,setMode]=createSignal28("all")
|
|
6840
6858
|
const targetKey=createMemo17(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
|
|
6841
6859
|
createEffect15(()=>{targetKey()
|
|
6842
6860
|
setMode("all")
|
|
@@ -6857,7 +6875,7 @@ const navigationSection=()=>props.navigationSection??1
|
|
|
6857
6875
|
return _$createComponent(Section,{get api(){return props.api
|
|
6858
6876
|
},get interaction(){return props.interaction
|
|
6859
6877
|
},sectionId:`${PLUGIN_ID}.section.todo`,get navigationSection(){return navigationSection()
|
|
6860
|
-
},title:"TODO",section:"todo",get summary(){return _$memo(()=>!!unavailable())()?"\u2014":`${view().counts.completed}/${list().length}`
|
|
6878
|
+
},title:"TODO",section:"todo",get summary(){return _$memo(()=>!!(unavailable()||managed()?.missing(props.sessionID)))()?"\u2014":`${view().counts.completed}/${list().length}`
|
|
6861
6879
|
},get open(){return props.preferences.expanded().todo
|
|
6862
6880
|
},onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show23,{get when(){return unavailable()
|
|
6863
6881
|
},get fallback(){return(()=>{var _el$=_$createElement("box")
|
|
@@ -6870,14 +6888,8 @@ _$insert(_el$,_$createComponent(Show23,{get when(){return managed()?.guidance(pr
|
|
|
6870
6888
|
},get navigationSection(){return navigationSection()
|
|
6871
6889
|
}})
|
|
6872
6890
|
}}),null)
|
|
6873
|
-
_$insert(_el$,_$createComponent(Show23,{get when(){return
|
|
6874
|
-
},get
|
|
6875
|
-
_$insertNode(_el$2,_$createTextNode(`Add Navigator's server plugin to opencode.json; restart OpenCode to enable Todo.`))
|
|
6876
|
-
_$setProp(_el$2,"wrapMode","word")
|
|
6877
|
-
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
6878
|
-
return _el$2
|
|
6879
|
-
}}),null)
|
|
6880
|
-
_$insert(_el$,_$createComponent(SectionRequestBody,{get api(){return props.api
|
|
6891
|
+
_$insert(_el$,_$createComponent(Show23,{get when(){return managed()?.missing(props.sessionID)
|
|
6892
|
+
},get fallback(){return _$createComponent(SectionRequestBody,{get api(){return props.api
|
|
6881
6893
|
},get interaction(){return props.interaction
|
|
6882
6894
|
},id:`${PLUGIN_ID}.retry.todo`,get position(){return{section:navigationSection(),row:1,column:0
|
|
6883
6895
|
}},get state(){return state()
|
|
@@ -6890,6 +6902,13 @@ _$insert(_el$,_$createComponent(SectionRequestBody,{get api(){return props.api
|
|
|
6890
6902
|
},visibility,get density(){return props.preferences.rowDensity?.()??"compact"
|
|
6891
6903
|
},get managed(){return Boolean(managed())
|
|
6892
6904
|
}})
|
|
6905
|
+
}})
|
|
6906
|
+
},get children(){var _el$2=_$createElement("text"),_el$3=_$createTextNode(` Navigator Todo needs a separate OpenCode 2 server plugin. See the README setup steps and restart OpenCode.`)
|
|
6907
|
+
_$insertNode(_el$2,_el$3)
|
|
6908
|
+
_$setProp(_el$2,"wrapMode","word")
|
|
6909
|
+
_$insert(_el$2,()=>icons.icon("info"),_el$3)
|
|
6910
|
+
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
6911
|
+
return _el$2
|
|
6893
6912
|
}}),null)
|
|
6894
6913
|
return _el$
|
|
6895
6914
|
})()
|
|
@@ -7151,7 +7170,7 @@ return false
|
|
|
7151
7170
|
}
|
|
7152
7171
|
function enabled(value){return typeof value==="function"?value():value!==false
|
|
7153
7172
|
}
|
|
7154
|
-
function createV2Keymap(context){const [revision,setRevision]=
|
|
7173
|
+
function createV2Keymap(context){const [revision,setRevision]=createSignal29(0)
|
|
7155
7174
|
const layers=new Map
|
|
7156
7175
|
let sequence=0
|
|
7157
7176
|
function layerActive(layer){const mode=layer.mode??"base"
|
|
@@ -7437,7 +7456,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
|
|
|
7437
7456
|
},interaction,skills,subagents,mcp
|
|
7438
7457
|
}),_$createComponent(FirstRunWizardPersistence,{api,preferences
|
|
7439
7458
|
}),_$createComponent(StartupSessionBinding,{api,controller:startup
|
|
7440
|
-
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.18.
|
|
7459
|
+
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.18.1"
|
|
7441
7460
|
}),_$createComponent(McpPersistence,{api,controller:mcp
|
|
7442
7461
|
})]
|
|
7443
7462
|
}})
|
|
@@ -7467,12 +7486,12 @@ throw result.error
|
|
|
7467
7486
|
}
|
|
7468
7487
|
return result.data?.type==="text"?result.data.content:undefined
|
|
7469
7488
|
})
|
|
7470
|
-
const versionStatus=createVersionStatus(api,"0.18.
|
|
7471
|
-
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.18.
|
|
7489
|
+
const versionStatus=createVersionStatus(api,"0.18.1")
|
|
7490
|
+
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.18.1"))
|
|
7472
7491
|
api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7473
7492
|
},get multilineCorners(){return preferences.cornerFont
|
|
7474
7493
|
},get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
|
|
7475
|
-
},navigatorVersion:"0.18.
|
|
7494
|
+
},navigatorVersion:"0.18.1",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7476
7495
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7477
7496
|
}})
|
|
7478
7497
|
}})
|
|
@@ -7486,15 +7505,15 @@ return
|
|
|
7486
7505
|
return new TextDecoder().decode(await context.client.file.read({location:context.location,path:".opencode/navigator.json"
|
|
7487
7506
|
}))
|
|
7488
7507
|
},todo)
|
|
7489
|
-
const versionStatus=createVersionStatus(adapter.api,"0.18.
|
|
7490
|
-
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.18.
|
|
7508
|
+
const versionStatus=createVersionStatus(adapter.api,"0.18.1")
|
|
7509
|
+
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.18.1"))
|
|
7491
7510
|
const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7492
7511
|
},get multilineCorners(){return preferences.cornerFont
|
|
7493
7512
|
},get children(){var _el$=_$createElement("box")
|
|
7494
7513
|
_$setProp(_el$,"flexDirection","row")
|
|
7495
7514
|
_$setProp(_el$,"justifyContent","space-between")
|
|
7496
7515
|
_$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
|
|
7497
|
-
},navigatorVersion:"0.18.
|
|
7516
|
+
},navigatorVersion:"0.18.1",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7498
7517
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7499
7518
|
}}),null)
|
|
7500
7519
|
_$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.18.
|
|
4
|
+
"version": "0.18.1",
|
|
5
5
|
"description": "Search, navigate, and manage OpenCode sessions from the TUI",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"packageManager": "bun@1.4.2",
|
|
@@ -102,9 +102,9 @@
|
|
|
102
102
|
}
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@opencode-ai/plugin": "1.18.
|
|
106
|
-
"@opencode-ai/sdk": "1.18.
|
|
107
|
-
"@opencode/plugin": "2.0.
|
|
105
|
+
"@opencode-ai/plugin": "1.18.34",
|
|
106
|
+
"@opencode-ai/sdk": "1.18.34",
|
|
107
|
+
"@opencode/plugin": "2.0.21",
|
|
108
108
|
"@opentui/core": "0.5.12",
|
|
109
109
|
"@opentui/keymap": "0.5.12",
|
|
110
110
|
"@opentui/solid": "0.5.12",
|