opencode-navigator 0.21.6 → 0.21.8
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 +10 -0
- package/README.md +11 -5
- package/dist/provider-limits.js +67 -81
- package/dist/tui.js +19 -17
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## [0.21.8] - 2026-10-09
|
|
6
|
+
|
|
7
|
+
- Make the unfilled part of Limits scales substantially quieter, matching the theme-derived sidebar-divider tone. Keep the filled segment, reset text, and remaining values readable in both icon modes and after theme changes.
|
|
8
|
+
|
|
9
|
+
## [0.21.7] - 2026-10-09
|
|
10
|
+
|
|
11
|
+
- Remove the vertical guide and its reserved gutter from Limits in both icon modes. Keep full-width quota scales, reset-left/remaining-right details, and one blank row between quota windows.
|
|
12
|
+
|
|
5
13
|
## [0.21.6] - 2026-10-09
|
|
6
14
|
|
|
7
15
|
- Refine Limits with a continuous muted guide, full-width thin-line quota scales, and reset-left/remaining-right details. Keep long reset text from overlapping the remaining value and preserve Text fallback, resize clipping, and existing controls.
|
|
@@ -104,6 +112,8 @@
|
|
|
104
112
|
|
|
105
113
|
Earlier release notes are available on [GitHub Releases](https://github.com/St1ggy/opencode-navigator/releases).
|
|
106
114
|
|
|
115
|
+
[0.21.8]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.7...v0.21.8
|
|
116
|
+
[0.21.7]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.6...v0.21.7
|
|
107
117
|
[0.21.6]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.5...v0.21.6
|
|
108
118
|
[0.21.5]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.4...v0.21.5
|
|
109
119
|
[0.21.4]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.3...v0.21.4
|
package/README.md
CHANGED
|
@@ -432,13 +432,19 @@ Codex account** and **Unlink Codex account** for the outdated manual association
|
|
|
432
432
|
bindings are reused; conflicting bindings remain isolated until a deliberate relink.
|
|
433
433
|
|
|
434
434
|
Limits starts with **[Provider name] Model name · variant**. Activate the model or
|
|
435
|
-
variant with the mouse or keyboard to open OpenCode's native selector.
|
|
436
|
-
|
|
437
|
-
|
|
435
|
+
variant with the mouse or keyboard to open OpenCode's native selector. Quota
|
|
436
|
+
windows have one blank row between them, without a vertical guide or gutter.
|
|
437
|
+
Each window uses two compact rows: a full-width adaptive
|
|
438
438
|
thin-line scale, then muted reset time on the left and remaining headroom aligned
|
|
439
439
|
to the right. The remaining value keeps its own space; long reset text is clipped.
|
|
440
|
-
Both rows stay within the sidebar's padding when it resizes.
|
|
441
|
-
|
|
440
|
+
Both rows stay within the sidebar's padding when it resizes.
|
|
441
|
+
|
|
442
|
+
The filled part of each scale uses muted text; the unfilled part uses the much
|
|
443
|
+
quieter, theme-derived sidebar-divider tone. Reset time and remaining values keep
|
|
444
|
+
their readable colors in both icon modes and when the theme changes.
|
|
445
|
+
|
|
446
|
+
Healthy views omit account IDs, technical scope/window-duration suffixes, source
|
|
447
|
+
explanations, and update timestamps. Account scope and native window durations remain in the data model;
|
|
442
448
|
durations describe provider quota windows, not time remaining until reset. Balances retain their native
|
|
443
449
|
currency or point unit; a missing total does not become a full progress scale.
|
|
444
450
|
|
package/dist/provider-limits.js
CHANGED
|
@@ -365,7 +365,7 @@ import {insert as _$insert} from "@opentui/solid"
|
|
|
365
365
|
import {setProp as _$setProp} from "@opentui/solid"
|
|
366
366
|
import {createElement as _$createElement} from "@opentui/solid"
|
|
367
367
|
import {createSignal as createSignal4} from "solid-js"
|
|
368
|
-
import {useIcons} from "./tui.js"
|
|
368
|
+
import {subtleLineColor,useIcons} from "./tui.js"
|
|
369
369
|
function measurement(window,remaining){if(remaining!==undefined)
|
|
370
370
|
return `${remaining}${window.unit === "%" ? "" : " "}${window.unit} left`
|
|
371
371
|
if(window.used!==undefined)
|
|
@@ -389,18 +389,20 @@ const [columns,setColumns]=createSignal4(0)
|
|
|
389
389
|
const view=()=>quotaPresentation(props.window)
|
|
390
390
|
const scale=()=>{const ratio=view().ratio
|
|
391
391
|
if(ratio===undefined)
|
|
392
|
-
return
|
|
392
|
+
return{filled:"Scale unknown",unfilled:""
|
|
393
|
+
}
|
|
393
394
|
const width=columns()
|
|
394
395
|
const filled=Math.round(ratio*width)
|
|
395
396
|
const symbols=icons.style()==="text"?["=","-"]:["\u2501","\u2500"]
|
|
396
|
-
return
|
|
397
|
-
}
|
|
397
|
+
return{filled:symbols[0].repeat(filled),unfilled:symbols[1].repeat(width-filled)
|
|
398
|
+
}}
|
|
399
|
+
const unfilledColor=()=>subtleLineColor(props.api.theme.current.backgroundPanel,props.api.theme.current.borderSubtle)
|
|
398
400
|
const valueWidth=()=>Math.min(columns(),Bun.stringWidth(view().value))
|
|
399
401
|
const gap=()=>columns()>valueWidth()?1:0
|
|
400
402
|
const resetWidth=()=>Math.max(0,columns()-valueWidth()-gap())
|
|
401
|
-
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createElement("
|
|
403
|
+
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createElement("span"),_el$4=_$createElement("box"),_el$5=_$createElement("text"),_el$6=_$createElement("text")
|
|
402
404
|
_$insertNode(_el$,_el$2)
|
|
403
|
-
_$insertNode(_el$,_el$
|
|
405
|
+
_$insertNode(_el$,_el$4)
|
|
404
406
|
_$setProp(_el$,"width","100%")
|
|
405
407
|
_$setProp(_el$,"minWidth",0)
|
|
406
408
|
_$setProp(_el$,"flexShrink",1)
|
|
@@ -408,37 +410,41 @@ _$setProp(_el$,"height",2)
|
|
|
408
410
|
_$setProp(_el$,"overflow","hidden")
|
|
409
411
|
_$setProp(_el$,"onSizeChange",function(){setColumns(this.width)
|
|
410
412
|
})
|
|
413
|
+
_$insertNode(_el$2,_el$3)
|
|
411
414
|
_$setProp(_el$2,"width","100%")
|
|
412
415
|
_$setProp(_el$2,"minWidth",0)
|
|
413
416
|
_$setProp(_el$2,"height",1)
|
|
414
417
|
_$setProp(_el$2,"wrapMode","none")
|
|
415
418
|
_$setProp(_el$2,"truncate",true)
|
|
416
|
-
_$insert(_el$2,scale)
|
|
417
|
-
_$
|
|
418
|
-
_$insertNode(_el$
|
|
419
|
-
_$
|
|
420
|
-
_$setProp(_el$
|
|
421
|
-
_$setProp(_el$3,"height",1)
|
|
422
|
-
_$setProp(_el$3,"flexDirection","row")
|
|
423
|
-
_$setProp(_el$3,"overflow","hidden")
|
|
419
|
+
_$insert(_el$2,()=>scale().filled,_el$3)
|
|
420
|
+
_$insert(_el$3,()=>scale().unfilled)
|
|
421
|
+
_$insertNode(_el$4,_el$5)
|
|
422
|
+
_$insertNode(_el$4,_el$6)
|
|
423
|
+
_$setProp(_el$4,"width","100%")
|
|
424
424
|
_$setProp(_el$4,"minWidth",0)
|
|
425
425
|
_$setProp(_el$4,"height",1)
|
|
426
|
-
_$setProp(_el$4,"
|
|
427
|
-
_$setProp(_el$4,"
|
|
428
|
-
_$
|
|
426
|
+
_$setProp(_el$4,"flexDirection","row")
|
|
427
|
+
_$setProp(_el$4,"overflow","hidden")
|
|
428
|
+
_$setProp(_el$5,"minWidth",0)
|
|
429
429
|
_$setProp(_el$5,"height",1)
|
|
430
430
|
_$setProp(_el$5,"wrapMode","none")
|
|
431
431
|
_$setProp(_el$5,"truncate",true)
|
|
432
|
-
_$insert(_el$5,()=>view().
|
|
433
|
-
_$
|
|
432
|
+
_$insert(_el$5,()=>view().reset)
|
|
433
|
+
_$setProp(_el$6,"height",1)
|
|
434
|
+
_$setProp(_el$6,"wrapMode","none")
|
|
435
|
+
_$setProp(_el$6,"truncate",true)
|
|
436
|
+
_$insert(_el$6,()=>view().value)
|
|
437
|
+
_$effect((_p$)=>{var _v$=props.api.theme.current.textMuted,_v$2={fg:unfilledColor()
|
|
438
|
+
},_v$3=resetWidth(),_v$4=props.api.theme.current.textMuted,_v$5=valueWidth(),_v$6=gap(),_v$7=props.api.theme.current.text
|
|
434
439
|
_v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
|
|
435
|
-
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$
|
|
436
|
-
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$
|
|
437
|
-
_v$4!==_p$.o&&(_p$.o=_$setProp(_el$5,"
|
|
438
|
-
_v$5!==_p$.i&&(_p$.i=_$setProp(_el$
|
|
439
|
-
_v$6!==_p$.n&&(_p$.n=_$setProp(_el$
|
|
440
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$3,"style",_v$2,_p$.t))
|
|
441
|
+
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$5,"width",_v$3,_p$.a))
|
|
442
|
+
_v$4!==_p$.o&&(_p$.o=_$setProp(_el$5,"fg",_v$4,_p$.o))
|
|
443
|
+
_v$5!==_p$.i&&(_p$.i=_$setProp(_el$6,"width",_v$5,_p$.i))
|
|
444
|
+
_v$6!==_p$.n&&(_p$.n=_$setProp(_el$6,"marginLeft",_v$6,_p$.n))
|
|
445
|
+
_v$7!==_p$.s&&(_p$.s=_$setProp(_el$6,"fg",_v$7,_p$.s))
|
|
440
446
|
return _p$
|
|
441
|
-
},{e:undefined,t:undefined,a:undefined,o:undefined,i:undefined,n:undefined
|
|
447
|
+
},{e:undefined,t:undefined,a:undefined,o:undefined,i:undefined,n:undefined,s:undefined
|
|
442
448
|
})
|
|
443
449
|
return _el$
|
|
444
450
|
})()
|
|
@@ -549,41 +555,21 @@ return _p$
|
|
|
549
555
|
return _el$
|
|
550
556
|
})()
|
|
551
557
|
}
|
|
552
|
-
import {effect as _$effect3} from "@opentui/solid"
|
|
553
|
-
import {insertNode as _$insertNode3} from "@opentui/solid"
|
|
554
|
-
import {createComponent as _$createComponent4} from "@opentui/solid"
|
|
555
558
|
import {insert as _$insert3} from "@opentui/solid"
|
|
559
|
+
import {createComponent as _$createComponent4} from "@opentui/solid"
|
|
556
560
|
import {setProp as _$setProp3} from "@opentui/solid"
|
|
557
561
|
import {createElement as _$createElement3} from "@opentui/solid"
|
|
558
562
|
import {For} from "solid-js"
|
|
559
|
-
|
|
560
|
-
function QuotaWindowGroup(props){const icons=useIcons2()
|
|
561
|
-
const guide=()=>Array.from({length:Math.max(0,props.windows.length*3-1)
|
|
562
|
-
},()=>icons.style()==="text"?"|":"\u2502").join(`
|
|
563
|
-
`)
|
|
564
|
-
return(()=>{var _el$=_$createElement3("box"),_el$2=_$createElement3("text"),_el$3=_$createElement3("box")
|
|
565
|
-
_$insertNode3(_el$,_el$2)
|
|
566
|
-
_$insertNode3(_el$,_el$3)
|
|
563
|
+
function QuotaWindowGroup(props){return(()=>{var _el$=_$createElement3("box")
|
|
567
564
|
_$setProp3(_el$,"width","100%")
|
|
568
565
|
_$setProp3(_el$,"minWidth",0)
|
|
569
|
-
_$setProp3(_el$,"
|
|
566
|
+
_$setProp3(_el$,"gap",1)
|
|
570
567
|
_$setProp3(_el$,"overflow","hidden")
|
|
571
|
-
_$
|
|
572
|
-
_$setProp3(_el$2,"marginRight",1)
|
|
573
|
-
_$setProp3(_el$2,"flexShrink",0)
|
|
574
|
-
_$setProp3(_el$2,"wrapMode","none")
|
|
575
|
-
_$insert3(_el$2,guide)
|
|
576
|
-
_$setProp3(_el$3,"width","100%")
|
|
577
|
-
_$setProp3(_el$3,"flexGrow",1)
|
|
578
|
-
_$setProp3(_el$3,"flexShrink",1)
|
|
579
|
-
_$setProp3(_el$3,"minWidth",0)
|
|
580
|
-
_$setProp3(_el$3,"gap",1)
|
|
581
|
-
_$insert3(_el$3,_$createComponent4(For,{get each(){return props.windows
|
|
568
|
+
_$insert3(_el$,_$createComponent4(For,{get each(){return props.windows
|
|
582
569
|
},children:(window)=>_$createComponent4(QuotaWindowRow,{get api(){return props.api
|
|
583
570
|
},window
|
|
584
571
|
})
|
|
585
572
|
}))
|
|
586
|
-
_$effect3((_$p)=>_$setProp3(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
587
573
|
return _el$
|
|
588
574
|
})()
|
|
589
575
|
}
|
|
@@ -645,25 +631,25 @@ return found??{id,name:id,sources:[],reason:"No independent quota/balance API or
|
|
|
645
631
|
import {insert as _$insert9} from "@opentui/solid"
|
|
646
632
|
import {mergeProps as _$mergeProps} from "@opentui/solid"
|
|
647
633
|
import {setProp as _$setProp10} from "@opentui/solid"
|
|
648
|
-
import {effect as _$
|
|
634
|
+
import {effect as _$effect9} from "@opentui/solid"
|
|
649
635
|
import {createTextNode as _$createTextNode4} from "@opentui/solid"
|
|
650
|
-
import {insertNode as _$
|
|
636
|
+
import {insertNode as _$insertNode6} from "@opentui/solid"
|
|
651
637
|
import {createElement as _$createElement10} from "@opentui/solid"
|
|
652
638
|
import {memo as _$memo7} from "@opentui/solid"
|
|
653
639
|
import {createComponent as _$createComponent13} from "@opentui/solid"
|
|
654
640
|
import {Show as Show7} from "solid-js"
|
|
655
641
|
import {useDialogs as useDialogs3} from "./tui.js"
|
|
656
642
|
import {setProp as _$setProp5} from "@opentui/solid"
|
|
657
|
-
import {effect as _$
|
|
643
|
+
import {effect as _$effect4} from "@opentui/solid"
|
|
658
644
|
import {createTextNode as _$createTextNode} from "@opentui/solid"
|
|
659
|
-
import {insertNode as _$
|
|
645
|
+
import {insertNode as _$insertNode3} from "@opentui/solid"
|
|
660
646
|
import {createElement as _$createElement5} from "@opentui/solid"
|
|
661
647
|
import {memo as _$memo2} from "@opentui/solid"
|
|
662
648
|
import {createComponent as _$createComponent7} from "@opentui/solid"
|
|
663
649
|
import {Show as Show2} from "solid-js"
|
|
664
|
-
import {useDialogs as useDialogs2,useIcons as
|
|
650
|
+
import {useDialogs as useDialogs2,useIcons as useIcons2} from "./tui.js"
|
|
665
651
|
import {createComponent as _$createComponent6} from "@opentui/solid"
|
|
666
|
-
import {effect as _$
|
|
652
|
+
import {effect as _$effect3} from "@opentui/solid"
|
|
667
653
|
import {insert as _$insert4} from "@opentui/solid"
|
|
668
654
|
import {setProp as _$setProp4} from "@opentui/solid"
|
|
669
655
|
import {createElement as _$createElement4} from "@opentui/solid"
|
|
@@ -714,11 +700,11 @@ item.activate(event)
|
|
|
714
700
|
_$setProp4(_el$,"wrapMode","none")
|
|
715
701
|
_$setProp4(_el$,"truncate",true)
|
|
716
702
|
_$insert4(_el$,()=>props.label)
|
|
717
|
-
_$
|
|
703
|
+
_$effect3((_$p)=>_$setProp4(_el$,"fg",item.foregroundColor(),_$p))
|
|
718
704
|
return _el$
|
|
719
705
|
}})
|
|
720
706
|
}
|
|
721
|
-
function CodexAccountControls(props){const icons=
|
|
707
|
+
function CodexAccountControls(props){const icons=useIcons2()
|
|
722
708
|
const model=()=>props.controller.current().model
|
|
723
709
|
const accountLink=createCodexAccountLink({api:props.api,preferences:props.preferences,adapter:props.codex,model,dialogs:useDialogs2(props.api)
|
|
724
710
|
})
|
|
@@ -731,8 +717,8 @@ const action=(id,row,label,onActivate)=>_$createComponent7(LimitsAction,{get api
|
|
|
731
717
|
return _$createComponent7(Show2,{get when(){return eligible()
|
|
732
718
|
},get children(){return [_$createComponent7(Show2,{get when(){return _$memo2(()=>!!!props.model.accountID)()&&(!props.model.hostConnection||props.model.hostConnection.status==="ready")
|
|
733
719
|
},get children(){return [(()=>{var _el$=_$createElement5("text")
|
|
734
|
-
_$
|
|
735
|
-
_$
|
|
720
|
+
_$insertNode3(_el$,_$createTextNode(`Link the matching Codex account once for this connection`))
|
|
721
|
+
_$effect4((_$p)=>_$setProp5(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
736
722
|
return _el$
|
|
737
723
|
})(),_$memo2(()=>action("link",2,`${icons.icon("scope")} Link Codex CLI account`,()=>void accountLink.link()))]
|
|
738
724
|
}}),_$createComponent7(Show2,{get when(){return _$memo2(()=>!!(props.model.accountID&&props.model.accountSource!=="host"))()&&props.controller.snapshot()?.availability==="unauthenticated"
|
|
@@ -744,9 +730,9 @@ return _el$
|
|
|
744
730
|
}
|
|
745
731
|
import {createComponent as _$createComponent9} from "@opentui/solid"
|
|
746
732
|
import {Show as Show3} from "solid-js"
|
|
747
|
-
import {useIcons as
|
|
733
|
+
import {useIcons as useIcons3} from "./tui.js"
|
|
748
734
|
import {createComponent as _$createComponent8} from "@opentui/solid"
|
|
749
|
-
import {effect as _$
|
|
735
|
+
import {effect as _$effect5} from "@opentui/solid"
|
|
750
736
|
import {insert as _$insert5} from "@opentui/solid"
|
|
751
737
|
import {setProp as _$setProp6} from "@opentui/solid"
|
|
752
738
|
import {createElement as _$createElement6} from "@opentui/solid"
|
|
@@ -788,11 +774,11 @@ control.activate(event)
|
|
|
788
774
|
_$setProp6(_el$,"wrapMode","none")
|
|
789
775
|
_$setProp6(_el$,"height",1)
|
|
790
776
|
_$insert5(_el$,label)
|
|
791
|
-
_$
|
|
777
|
+
_$effect5((_$p)=>_$setProp6(_el$,"fg",control.foregroundColor(),_$p))
|
|
792
778
|
return _el$
|
|
793
779
|
}})
|
|
794
780
|
}
|
|
795
|
-
function LimitsHeaderControls(props){const icons=
|
|
781
|
+
function LimitsHeaderControls(props){const icons=useIcons3()
|
|
796
782
|
return [_$createComponent9(Show3,{get when(){return props.credits
|
|
797
783
|
},get children(){return _$createComponent9(SectionHeaderControl,{get api(){return props.api
|
|
798
784
|
},get interaction(){return props.interaction
|
|
@@ -806,9 +792,9 @@ return [_$createComponent9(Show3,{get when(){return props.credits
|
|
|
806
792
|
}}})]
|
|
807
793
|
}
|
|
808
794
|
import {insert as _$insert6} from "@opentui/solid"
|
|
809
|
-
import {effect as _$
|
|
795
|
+
import {effect as _$effect6} from "@opentui/solid"
|
|
810
796
|
import {createTextNode as _$createTextNode2} from "@opentui/solid"
|
|
811
|
-
import {insertNode as _$
|
|
797
|
+
import {insertNode as _$insertNode4} from "@opentui/solid"
|
|
812
798
|
import {memo as _$memo4} from "@opentui/solid"
|
|
813
799
|
import {createComponent as _$createComponent10} from "@opentui/solid"
|
|
814
800
|
import {setProp as _$setProp7} from "@opentui/solid"
|
|
@@ -829,9 +815,9 @@ _$insert6(_el$,_$createComponent10(LimitsAction,{get api(){return props.api
|
|
|
829
815
|
}),null)
|
|
830
816
|
_$insert6(_el$,_$createComponent10(Show4,{get when(){return props.model.variant||props.selection?.variants(props.model).length
|
|
831
817
|
},get children(){return [(()=>{var _el$2=_$createElement7("text"),_el$3=_$createTextNode2(` \xB7 `)
|
|
832
|
-
_$
|
|
818
|
+
_$insertNode4(_el$2,_el$3)
|
|
833
819
|
_$setProp7(_el$2,"flexShrink",0)
|
|
834
|
-
_$
|
|
820
|
+
_$effect6((_$p)=>_$setProp7(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
835
821
|
return _el$2
|
|
836
822
|
})(),_$createComponent10(LimitsAction,{get api(){return props.api
|
|
837
823
|
},get interaction(){return props.interaction
|
|
@@ -844,7 +830,7 @@ return _el$2
|
|
|
844
830
|
return _el$
|
|
845
831
|
})()
|
|
846
832
|
}
|
|
847
|
-
import {effect as _$
|
|
833
|
+
import {effect as _$effect7} from "@opentui/solid"
|
|
848
834
|
import {insert as _$insert7} from "@opentui/solid"
|
|
849
835
|
import {setProp as _$setProp8} from "@opentui/solid"
|
|
850
836
|
import {createElement as _$createElement8} from "@opentui/solid"
|
|
@@ -884,22 +870,22 @@ return _$createComponent11(Show5,{get when(){return _$memo5(()=>!!props.controll
|
|
|
884
870
|
},children:(value)=>(()=>{var _el$=_$createElement8("text")
|
|
885
871
|
_$setProp8(_el$,"wrapMode","word")
|
|
886
872
|
_$insert7(_el$,value)
|
|
887
|
-
_$
|
|
873
|
+
_$effect7((_$p)=>_$setProp8(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
888
874
|
return _el$
|
|
889
875
|
})()
|
|
890
876
|
})
|
|
891
877
|
}
|
|
892
878
|
import {createComponent as _$createComponent12} from "@opentui/solid"
|
|
893
|
-
import {effect as _$
|
|
879
|
+
import {effect as _$effect8} from "@opentui/solid"
|
|
894
880
|
import {createTextNode as _$createTextNode3} from "@opentui/solid"
|
|
895
|
-
import {insertNode as _$
|
|
881
|
+
import {insertNode as _$insertNode5} from "@opentui/solid"
|
|
896
882
|
import {memo as _$memo6} from "@opentui/solid"
|
|
897
883
|
import {insert as _$insert8} from "@opentui/solid"
|
|
898
884
|
import {setProp as _$setProp9} from "@opentui/solid"
|
|
899
885
|
import {createElement as _$createElement9} from "@opentui/solid"
|
|
900
886
|
import {Show as Show6,createSignal as createSignal7} from "solid-js"
|
|
901
|
-
import {SelectionBox as SelectionBox3,useIcons as
|
|
902
|
-
function Section(props){const icons=
|
|
887
|
+
import {SelectionBox as SelectionBox3,useIcons as useIcons4} from "./tui.js"
|
|
888
|
+
function Section(props){const icons=useIcons4()
|
|
903
889
|
const [headerWidth,setHeaderWidth]=createSignal7(0)
|
|
904
890
|
const icon=()=>props.section?icons.section(props.section):props.icon
|
|
905
891
|
const theme=()=>props.api.theme.current
|
|
@@ -914,10 +900,10 @@ _$insert8(_el$,_$createComponent12(SelectionBox3,{ref:(node)=>item.ref(node),get
|
|
|
914
900
|
},get onMouseOut(){return item.onMouseOut
|
|
915
901
|
},onMouseDown:(event)=>item.activate(event),onSizeChange:function(){setHeaderWidth(this.width)
|
|
916
902
|
},get children(){return [(()=>{var _el$2=_$createElement9("text"),_el$3=_$createElement9("span"),_el$4=_$createTextNode3(` `),_el$5=_$createElement9("span"),_el$6=_$createElement9("b")
|
|
917
|
-
_$
|
|
918
|
-
_$
|
|
919
|
-
_$
|
|
920
|
-
_$
|
|
903
|
+
_$insertNode5(_el$2,_el$3)
|
|
904
|
+
_$insertNode5(_el$2,_el$4)
|
|
905
|
+
_$insertNode5(_el$2,_el$5)
|
|
906
|
+
_$insertNode5(_el$2,_el$6)
|
|
921
907
|
_$setProp9(_el$2,"flexShrink",0)
|
|
922
908
|
_$setProp9(_el$2,"wrapMode","none")
|
|
923
909
|
_$insert8(_el$3,()=>icons.icon(props.open?"expanded":"collapsed"))
|
|
@@ -925,7 +911,7 @@ _$insert8(_el$5,(()=>{var _c$=_$memo6(()=>!!icon())
|
|
|
925
911
|
return()=>_c$()?`${icon()} `:""
|
|
926
912
|
})())
|
|
927
913
|
_$insert8(_el$6,()=>props.title)
|
|
928
|
-
_$
|
|
914
|
+
_$effect8((_p$)=>{var _v$=item.foregroundColor(),_v$2={fg:item.focused()?item.foregroundColor():theme().accent
|
|
929
915
|
},_v$3={fg:item.focused()?item.foregroundColor():theme().accent
|
|
930
916
|
}
|
|
931
917
|
_v$!==_p$.e&&(_p$.e=_$setProp9(_el$2,"fg",_v$,_p$.e))
|
|
@@ -956,7 +942,7 @@ _$setProp9(_el$8,"wrapMode","none")
|
|
|
956
942
|
_$setProp9(_el$8,"truncate",true)
|
|
957
943
|
_$setProp9(_el$8,"height",1)
|
|
958
944
|
_$insert8(_el$8,()=>props.summary)
|
|
959
|
-
_$
|
|
945
|
+
_$effect8((_p$)=>{var _v$4=item.focused()?item.foregroundColor():theme().textMuted,_v$5=props.headerAction?0:1
|
|
960
946
|
_v$4!==_p$.e&&(_p$.e=_$setProp9(_el$8,"fg",_v$4,_p$.e))
|
|
961
947
|
_v$5!==_p$.t&&(_p$.t=_$setProp9(_el$8,"flexShrink",_v$5,_p$.t))
|
|
962
948
|
return _p$
|
|
@@ -999,8 +985,8 @@ return _$createComponent13(Section,{get api(){return props.api
|
|
|
999
985
|
},get open(){return props.preferences.expanded().limits
|
|
1000
986
|
},onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$createComponent13(Show7,{get when(){return model()
|
|
1001
987
|
},get fallback(){return(()=>{var _el$=_$createElement10("text")
|
|
1002
|
-
_$
|
|
1003
|
-
_$
|
|
988
|
+
_$insertNode6(_el$,_$createTextNode4(`Open a session to view model limits`))
|
|
989
|
+
_$effect9((_$p)=>_$setProp10(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
1004
990
|
return _el$
|
|
1005
991
|
})()
|
|
1006
992
|
},children:(selected)=>(()=>{var _el$3=_$createElement10("box")
|
package/dist/tui.js
CHANGED
|
@@ -724,7 +724,7 @@ setPosition(body.scrollTop)
|
|
|
724
724
|
|
|
725
725
|
|
|
726
726
|
|
|
727
|
-
import {RGBA,TextAttributes,TextAttributes as TextAttributes2,TextAttributes as TextAttributes3,TextAttributes as TextAttributes6,TextAttributes as TextAttributes4,TextAttributes as TextAttributes5,TextAttributes as TextAttributes7,RGBA as
|
|
727
|
+
import {RGBA,TextAttributes,TextAttributes as TextAttributes2,TextAttributes as TextAttributes3,RGBA as RGBA2,parseColor,TextAttributes as TextAttributes6,TextAttributes as TextAttributes4,TextAttributes as TextAttributes5,TextAttributes as TextAttributes7,RGBA as RGBA3,parseColor as parseColor2,TextAttributes as TextAttributes8,TextAttributes as TextAttributes9,TextAttributes as TextAttributes12,TextAttributes as TextAttributes10,TextAttributes as TextAttributes11,TextAttributes as TextAttributes13,TextAttributes as TextAttributes14,TextAttributes as TextAttributes16,TextAttributes as TextAttributes15,TextAttributes as TextAttributes17,ScrollBoxRenderable,TextAttributes as TextAttributes18} from "@opentui/core"
|
|
728
728
|
|
|
729
729
|
function SelectionBox(props){const icons=useIcons()
|
|
730
730
|
const [local,boxProps]=splitProps(props,["ref","iconOnly"])
|
|
@@ -1080,6 +1080,11 @@ return _p$
|
|
|
1080
1080
|
return _el$
|
|
1081
1081
|
}}))
|
|
1082
1082
|
}
|
|
1083
|
+
|
|
1084
|
+
function subtleLineColor(background,border){const from=parseColor(background)
|
|
1085
|
+
const to=parseColor(border)
|
|
1086
|
+
return RGBA2.fromValues(from.r + (to.r-from.r)*0.45,from.g + (to.g-from.g)*0.45,from.b + (to.b-from.b)*0.45)
|
|
1087
|
+
}
|
|
1083
1088
|
function McpErrorDialog(props){return _$createComponent(SelectionMenu,{get api(){return props.api
|
|
1084
1089
|
},get title(){return `MCP error \xB7 ${props.name}`
|
|
1085
1090
|
},height:12,get options(){return [{title:`Status \xB7 ${props.status}`,value:"error",description:props.error,icon:"error"
|
|
@@ -3036,7 +3041,7 @@ return scored.map(({item})=>item)
|
|
|
3036
3041
|
|
|
3037
3042
|
|
|
3038
3043
|
|
|
3039
|
-
function mixColor(from,to,amount){return
|
|
3044
|
+
function mixColor(from,to,amount){return RGBA3.fromValues(from.r + (to.r-from.r)*amount,from.g + (to.g-from.g)*amount,from.b + (to.b-from.b)*amount)
|
|
3040
3045
|
}
|
|
3041
3046
|
function createSearchDialogController(props){const context=searchContext(props.api)
|
|
3042
3047
|
const skillTarget=props.skills.target()
|
|
@@ -3052,9 +3057,9 @@ const theme=()=>props.api.theme.current
|
|
|
3052
3057
|
const icons=useIcons()
|
|
3053
3058
|
const commandRevision=createQuickActionRevision(props.api)
|
|
3054
3059
|
const dialogs=useDialogs(props.api)
|
|
3055
|
-
const resultColors=createMemo(()=>{const background=
|
|
3060
|
+
const resultColors=createMemo(()=>{const background=parseColor2(theme().backgroundPanel)
|
|
3056
3061
|
const contrast=background.r*0.299 + background.g*0.587 + background.b*0.114>0.5?0:1
|
|
3057
|
-
return{title:mixColor(
|
|
3062
|
+
return{title:mixColor(parseColor2(theme().text),RGBA3.fromValues(contrast,contrast,contrast),0.45),description:mixColor(parseColor2(theme().textMuted),background,0.4)
|
|
3058
3063
|
}})
|
|
3059
3064
|
const dimensions=useTerminalDimensions3()
|
|
3060
3065
|
let input
|
|
@@ -6190,8 +6195,6 @@ return _$createComponent(SectionWithHeaderAction,{get api(){return props.api
|
|
|
6190
6195
|
|
|
6191
6196
|
|
|
6192
6197
|
|
|
6193
|
-
|
|
6194
|
-
|
|
6195
6198
|
|
|
6196
6199
|
|
|
6197
6200
|
|
|
@@ -6306,10 +6309,9 @@ return _el$
|
|
|
6306
6309
|
|
|
6307
6310
|
|
|
6308
6311
|
|
|
6309
|
-
|
|
6310
6312
|
function SectionBoundary(props){const dividerColor=()=>{const{backgroundPanel,borderSubtle
|
|
6311
6313
|
}=props.api.theme.current
|
|
6312
|
-
return
|
|
6314
|
+
return subtleLineColor(backgroundPanel,borderSubtle)
|
|
6313
6315
|
}
|
|
6314
6316
|
return(()=>{var _el$=_$createElement("box")
|
|
6315
6317
|
_$spread(_el$,_$mergeProps(()=>props.divided?{border:["bottom"],borderColor:dividerColor(),paddingBottom:1
|
|
@@ -7522,7 +7524,7 @@ const limitsPath=import.meta.url.includes("/dist/tui.js")?"./provider-limits.js"
|
|
|
7522
7524
|
const limitsModule=await import(limitsPath)
|
|
7523
7525
|
const LimitsSection=limitsModule.ProviderLimitsSection
|
|
7524
7526
|
const{controller:limits,codex,accountSource,selectModel,modelSelection
|
|
7525
|
-
}=limitsModule.createProviderQuotaIntegration(api,preferences,"0.21.
|
|
7527
|
+
}=limitsModule.createProviderQuotaIntegration(api,preferences,"0.21.8",hostContext)
|
|
7526
7528
|
const mcp=createMcpController(api,preferences.persistMcp,preferences)
|
|
7527
7529
|
const interaction=createSidebarInteraction(api,()=>openKeyboardHelp(api,preferences.lspIconStyle,preferences.cornerFont))
|
|
7528
7530
|
const startup=createStartupSessionController(api,preferences)
|
|
@@ -7550,7 +7552,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
|
|
|
7550
7552
|
},interaction,skills,subagents,mcp
|
|
7551
7553
|
}),_$createComponent(FirstRunWizardPersistence,{api,preferences
|
|
7552
7554
|
}),_$createComponent(StartupSessionBinding,{api,controller:startup
|
|
7553
|
-
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.21.
|
|
7555
|
+
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.21.8"
|
|
7554
7556
|
}),_$createComponent(McpPersistence,{api,controller:mcp
|
|
7555
7557
|
})]
|
|
7556
7558
|
}})
|
|
@@ -7583,12 +7585,12 @@ return result.data?.type==="text"?result.data.content:undefined
|
|
|
7583
7585
|
})
|
|
7584
7586
|
const{createVersionStatus,createVersionUpdateActions,createOpenCodeV1VersionUpdater
|
|
7585
7587
|
}=await loadNavigatorUpdates()
|
|
7586
|
-
const versionStatus=createVersionStatus(api,"0.21.
|
|
7587
|
-
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.
|
|
7588
|
+
const versionStatus=createVersionStatus(api,"0.21.8")
|
|
7589
|
+
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.8"))
|
|
7588
7590
|
api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7589
7591
|
},get multilineCorners(){return preferences.cornerFont
|
|
7590
7592
|
},get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
|
|
7591
|
-
},navigatorVersion:"0.21.
|
|
7593
|
+
},navigatorVersion:"0.21.8",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7592
7594
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7593
7595
|
}})
|
|
7594
7596
|
}})
|
|
@@ -7604,15 +7606,15 @@ return new TextDecoder().decode(await context.client.file.read({location:context
|
|
|
7604
7606
|
},todo,context)
|
|
7605
7607
|
const{createVersionStatus,createVersionUpdateActions,createOpenCodeV2VersionUpdater
|
|
7606
7608
|
}=await loadNavigatorUpdates()
|
|
7607
|
-
const versionStatus=createVersionStatus(adapter.api,"0.21.
|
|
7608
|
-
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.
|
|
7609
|
+
const versionStatus=createVersionStatus(adapter.api,"0.21.8")
|
|
7610
|
+
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.8"))
|
|
7609
7611
|
const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7610
7612
|
},get multilineCorners(){return preferences.cornerFont
|
|
7611
7613
|
},get children(){var _el$=_$createElement("box")
|
|
7612
7614
|
_$setProp(_el$,"flexDirection","row")
|
|
7613
7615
|
_$setProp(_el$,"justifyContent","space-between")
|
|
7614
7616
|
_$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
|
|
7615
|
-
},navigatorVersion:"0.21.
|
|
7617
|
+
},navigatorVersion:"0.21.8",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7616
7618
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7617
7619
|
}}),null)
|
|
7618
7620
|
_$insert(_el$,_$createComponent(SettingsFooterButton,{get api(){return adapter.api
|
|
@@ -7627,5 +7629,5 @@ await adapter.dispose()
|
|
|
7627
7629
|
var plugin={id:PLUGIN_ID,tui:setupOpenCodeV1,setup:setupOpenCodeV2
|
|
7628
7630
|
}
|
|
7629
7631
|
var plugin_default=plugin
|
|
7630
|
-
export{DEFAULT_SECTION_EXPANSION,DialogAction,DialogHeader,DialogSurface,FOCUS_COMMAND,FirstRunWizard,GuardedConfirmation,KeyboardHelpDialog,LspBadge,McpSection,SelectionMenu as PresetMenu,QUICK_ACTIONS,Section,SectionFilter,SelectionBox,SelectionMenu,SettingsDialog,SidebarFocusBinding,SidebarToggleBinding,SkillsSection,createDialogStack,createMcpController,createPreferencesController,createSidebarInteraction,createSkillController,createSubagentController,createTodoController,plugin_default as default,isEffectivelyVisible,lspIcon,matchesFilter,openFirstRunWizard,openKeyboardHelp,openSettings,showFirstRunWizard,useDialogScroll,useDialogState,useDialogs,useIcons
|
|
7632
|
+
export{DEFAULT_SECTION_EXPANSION,DialogAction,DialogHeader,DialogSurface,FOCUS_COMMAND,FirstRunWizard,GuardedConfirmation,KeyboardHelpDialog,LspBadge,McpSection,SelectionMenu as PresetMenu,QUICK_ACTIONS,Section,SectionFilter,SelectionBox,SelectionMenu,SettingsDialog,SidebarFocusBinding,SidebarToggleBinding,SkillsSection,createDialogStack,createMcpController,createPreferencesController,createSidebarInteraction,createSkillController,createSubagentController,createTodoController,plugin_default as default,isEffectivelyVisible,lspIcon,matchesFilter,openFirstRunWizard,openKeyboardHelp,openSettings,showFirstRunWizard,subtleLineColor,useDialogScroll,useDialogState,useDialogs,useIcons
|
|
7631
7633
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "opencode-navigator",
|
|
4
|
-
"version": "0.21.
|
|
4
|
+
"version": "0.21.8",
|
|
5
5
|
"description": "Search, navigate, and manage OpenCode sessions from the TUI",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"packageManager": "bun@1.4.2",
|