opencode-navigator 0.21.5 → 0.21.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.21.7] - 2026-10-09
6
+
7
+ - 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.
8
+
9
+ ## [0.21.6] - 2026-10-09
10
+
11
+ - 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.
12
+
5
13
  ## [0.21.5] - 2026-10-07
6
14
 
7
15
  - Make automatic Limits refresh configurable in scoped Behavior settings and portable configuration, with a five-minute default and one-minute minimum. Keep manual Refresh and supported model/account switches immediate.
@@ -100,6 +108,8 @@
100
108
 
101
109
  Earlier release notes are available on [GitHub Releases](https://github.com/St1ggy/opencode-navigator/releases).
102
110
 
111
+ [0.21.7]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.6...v0.21.7
112
+ [0.21.6]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.5...v0.21.6
103
113
  [0.21.5]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.4...v0.21.5
104
114
  [0.21.4]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.3...v0.21.4
105
115
  [0.21.3]: https://github.com/St1ggy/opencode-navigator/compare/v0.21.2...v0.21.3
package/README.md CHANGED
@@ -432,9 +432,11 @@ 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. Each quota
436
- window uses two compact rows: remaining headroom with an adaptive muted thin-line
437
- scale spanning the available sidebar content width, then a muted reset time.
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
+ thin-line scale, then muted reset time on the left and remaining headroom aligned
439
+ to the right. The remaining value keeps its own space; long reset text is clipped.
438
440
  Both rows stay within the sidebar's padding when it resizes. Healthy views omit
439
441
  account IDs, technical scope/window-duration suffixes, source explanations, and update timestamps. Account scope and native window durations remain in the data model;
440
442
  durations describe provider quota windows, not time remaining until reset. Balances retain their native
@@ -389,42 +389,56 @@ 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 " \xB7 scale unknown"
393
- const width=Math.max(0,columns()-Bun.stringWidth(view().value)-1)
392
+ return "Scale unknown"
393
+ const width=columns()
394
394
  const filled=Math.round(ratio*width)
395
395
  const symbols=icons.style()==="text"?["=","-"]:["\u2501","\u2500"]
396
- return width?` ${symbols[0].repeat(filled)}${symbols[1].repeat(width - filled)}`:""
396
+ return symbols[0].repeat(filled) + symbols[1].repeat(width-filled)
397
397
  }
398
- return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createElement("span"),_el$4=_$createElement("text")
398
+ const valueWidth=()=>Math.min(columns(),Bun.stringWidth(view().value))
399
+ const gap=()=>columns()>valueWidth()?1:0
400
+ const resetWidth=()=>Math.max(0,columns()-valueWidth()-gap())
401
+ return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createElement("box"),_el$4=_$createElement("text"),_el$5=_$createElement("text")
399
402
  _$insertNode(_el$,_el$2)
400
- _$insertNode(_el$,_el$4)
403
+ _$insertNode(_el$,_el$3)
401
404
  _$setProp(_el$,"width","100%")
402
405
  _$setProp(_el$,"minWidth",0)
403
406
  _$setProp(_el$,"flexShrink",1)
407
+ _$setProp(_el$,"height",2)
404
408
  _$setProp(_el$,"overflow","hidden")
405
409
  _$setProp(_el$,"onSizeChange",function(){setColumns(this.width)
406
410
  })
407
- _$insertNode(_el$2,_el$3)
408
411
  _$setProp(_el$2,"width","100%")
409
412
  _$setProp(_el$2,"minWidth",0)
410
413
  _$setProp(_el$2,"height",1)
411
414
  _$setProp(_el$2,"wrapMode","none")
412
415
  _$setProp(_el$2,"truncate",true)
413
- _$insert(_el$3,()=>view().value)
414
- _$insert(_el$2,scale,null)
415
- _$setProp(_el$4,"width","100%")
416
+ _$insert(_el$2,scale)
417
+ _$insertNode(_el$3,_el$4)
418
+ _$insertNode(_el$3,_el$5)
419
+ _$setProp(_el$3,"width","100%")
420
+ _$setProp(_el$3,"minWidth",0)
421
+ _$setProp(_el$3,"height",1)
422
+ _$setProp(_el$3,"flexDirection","row")
423
+ _$setProp(_el$3,"overflow","hidden")
416
424
  _$setProp(_el$4,"minWidth",0)
417
425
  _$setProp(_el$4,"height",1)
418
426
  _$setProp(_el$4,"wrapMode","none")
419
427
  _$setProp(_el$4,"truncate",true)
420
428
  _$insert(_el$4,()=>view().reset)
421
- _$effect((_p$)=>{var _v$=props.api.theme.current.textMuted,_v$2={fg:props.api.theme.current.text
422
- },_v$3=props.api.theme.current.textMuted
429
+ _$setProp(_el$5,"height",1)
430
+ _$setProp(_el$5,"wrapMode","none")
431
+ _$setProp(_el$5,"truncate",true)
432
+ _$insert(_el$5,()=>view().value)
433
+ _$effect((_p$)=>{var _v$=props.api.theme.current.textMuted,_v$2=resetWidth(),_v$3=props.api.theme.current.textMuted,_v$4=valueWidth(),_v$5=gap(),_v$6=props.api.theme.current.text
423
434
  _v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
424
- _v$2!==_p$.t&&(_p$.t=_$setProp(_el$3,"style",_v$2,_p$.t))
435
+ _v$2!==_p$.t&&(_p$.t=_$setProp(_el$4,"width",_v$2,_p$.t))
425
436
  _v$3!==_p$.a&&(_p$.a=_$setProp(_el$4,"fg",_v$3,_p$.a))
437
+ _v$4!==_p$.o&&(_p$.o=_$setProp(_el$5,"width",_v$4,_p$.o))
438
+ _v$5!==_p$.i&&(_p$.i=_$setProp(_el$5,"marginLeft",_v$5,_p$.i))
439
+ _v$6!==_p$.n&&(_p$.n=_$setProp(_el$5,"fg",_v$6,_p$.n))
426
440
  return _p$
427
- },{e:undefined,t:undefined,a:undefined
441
+ },{e:undefined,t:undefined,a:undefined,o:undefined,i:undefined,n:undefined
428
442
  })
429
443
  return _el$
430
444
  })()
@@ -509,8 +523,8 @@ else if(option.value.startsWith("credit:"))
509
523
  actions.review(option.value.slice("credit:".length)||undefined)
510
524
  }})
511
525
  }
512
- import {createComponent as _$createComponent4} from "@opentui/solid"
513
- import {For} from "solid-js"
526
+ import {createComponent as _$createComponent5} from "@opentui/solid"
527
+ import {For as For2,Show} from "solid-js"
514
528
  import {effect as _$effect2} from "@opentui/solid"
515
529
  import {insertNode as _$insertNode2} from "@opentui/solid"
516
530
  import {insert as _$insert2} from "@opentui/solid"
@@ -535,12 +549,30 @@ return _p$
535
549
  return _el$
536
550
  })()
537
551
  }
538
- function QuotaSnapshotRows(props){return [_$createComponent4(For,{get each(){return props.snapshot.windows
552
+ import {insert as _$insert3} from "@opentui/solid"
553
+ import {createComponent as _$createComponent4} from "@opentui/solid"
554
+ import {setProp as _$setProp3} from "@opentui/solid"
555
+ import {createElement as _$createElement3} from "@opentui/solid"
556
+ import {For} from "solid-js"
557
+ function QuotaWindowGroup(props){return(()=>{var _el$=_$createElement3("box")
558
+ _$setProp3(_el$,"width","100%")
559
+ _$setProp3(_el$,"minWidth",0)
560
+ _$setProp3(_el$,"gap",1)
561
+ _$setProp3(_el$,"overflow","hidden")
562
+ _$insert3(_el$,_$createComponent4(For,{get each(){return props.windows
539
563
  },children:(window)=>_$createComponent4(QuotaWindowRow,{get api(){return props.api
540
564
  },window
541
565
  })
542
- }),_$createComponent4(For,{get each(){return props.snapshot.balances
543
- },children:(balance)=>_$createComponent4(QuotaBalanceRow,{get api(){return props.api
566
+ }))
567
+ return _el$
568
+ })()
569
+ }
570
+ function QuotaSnapshotRows(props){return [_$createComponent5(Show,{get when(){return props.snapshot.windows.length>0
571
+ },get children(){return _$createComponent5(QuotaWindowGroup,{get api(){return props.api
572
+ },get windows(){return props.snapshot.windows
573
+ }})
574
+ }}),_$createComponent5(For2,{get each(){return props.snapshot.balances
575
+ },children:(balance)=>_$createComponent5(QuotaBalanceRow,{get api(){return props.api
544
576
  },balance
545
577
  })
546
578
  })]
@@ -590,31 +622,31 @@ function providerQuotaCapability(id,canonical){const key=aliases[canonical??id]?
590
622
  const found=PROVIDER_QUOTA_CAPABILITIES.find((entry)=>entry.id===key)
591
623
  return found??{id,name:id,sources:[],reason:"No independent quota/balance API or native counter semantics are verified for this provider.",documentation:["https://opencode.ai/docs/providers/"]
592
624
  }}
593
- import {insert as _$insert8} from "@opentui/solid"
625
+ import {insert as _$insert9} from "@opentui/solid"
594
626
  import {mergeProps as _$mergeProps} from "@opentui/solid"
595
- import {setProp as _$setProp9} from "@opentui/solid"
627
+ import {setProp as _$setProp10} from "@opentui/solid"
596
628
  import {effect as _$effect9} from "@opentui/solid"
597
629
  import {createTextNode as _$createTextNode4} from "@opentui/solid"
598
630
  import {insertNode as _$insertNode6} from "@opentui/solid"
599
- import {createElement as _$createElement9} from "@opentui/solid"
631
+ import {createElement as _$createElement10} from "@opentui/solid"
600
632
  import {memo as _$memo7} from "@opentui/solid"
601
- import {createComponent as _$createComponent12} from "@opentui/solid"
602
- import {Show as Show6} from "solid-js"
633
+ import {createComponent as _$createComponent13} from "@opentui/solid"
634
+ import {Show as Show7} from "solid-js"
603
635
  import {useDialogs as useDialogs3} from "./tui.js"
604
- import {setProp as _$setProp4} from "@opentui/solid"
636
+ import {setProp as _$setProp5} from "@opentui/solid"
605
637
  import {effect as _$effect4} from "@opentui/solid"
606
638
  import {createTextNode as _$createTextNode} from "@opentui/solid"
607
639
  import {insertNode as _$insertNode3} from "@opentui/solid"
608
- import {createElement as _$createElement4} from "@opentui/solid"
640
+ import {createElement as _$createElement5} from "@opentui/solid"
609
641
  import {memo as _$memo2} from "@opentui/solid"
610
- import {createComponent as _$createComponent6} from "@opentui/solid"
611
- import {Show} from "solid-js"
642
+ import {createComponent as _$createComponent7} from "@opentui/solid"
643
+ import {Show as Show2} from "solid-js"
612
644
  import {useDialogs as useDialogs2,useIcons as useIcons2} from "./tui.js"
613
- import {createComponent as _$createComponent5} from "@opentui/solid"
645
+ import {createComponent as _$createComponent6} from "@opentui/solid"
614
646
  import {effect as _$effect3} from "@opentui/solid"
615
- import {insert as _$insert3} from "@opentui/solid"
616
- import {setProp as _$setProp3} from "@opentui/solid"
617
- import {createElement as _$createElement3} from "@opentui/solid"
647
+ import {insert as _$insert4} from "@opentui/solid"
648
+ import {setProp as _$setProp4} from "@opentui/solid"
649
+ import {createElement as _$createElement4} from "@opentui/solid"
618
650
  import {SelectionBox} from "./tui.js"
619
651
  import {createSignal as createSignal5,onCleanup} from "solid-js"
620
652
  function sidebarInteractiveColors(theme,state,normalColor=theme.text,mode="row"){const highlighted=!state.disabled&&(state.focused||mode==="control"&&state.hovered)
@@ -650,7 +682,7 @@ return true
650
682
  }}}
651
683
  function LimitsAction(props){const item=useSidebarItem(props.api,props.interaction,{id:props.id,position:()=>props.position,disabled:()=>props.disabled===true,activate:props.onActivate
652
684
  },()=>props.api.theme.current.text,props.inline?"control":"row")
653
- return _$createComponent5(SelectionBox,{ref:(node)=>item.ref(node),get id(){return props.id
685
+ return _$createComponent6(SelectionBox,{ref:(node)=>item.ref(node),get id(){return props.id
654
686
  },height:1,get flexGrow(){return props.flexGrow
655
687
  },get maxWidth(){return props.maxWidth
656
688
  },flexShrink:1,minWidth:3,get backgroundColor(){return item.backgroundColor()
@@ -658,11 +690,11 @@ return _$createComponent5(SelectionBox,{ref:(node)=>item.ref(node),get id(){retu
658
690
  },get onMouseOut(){return item.onMouseOut
659
691
  },onMouseUp:(event)=>{event.stopPropagation()
660
692
  item.activate(event)
661
- },get children(){var _el$=_$createElement3("text")
662
- _$setProp3(_el$,"wrapMode","none")
663
- _$setProp3(_el$,"truncate",true)
664
- _$insert3(_el$,()=>props.label)
665
- _$effect3((_$p)=>_$setProp3(_el$,"fg",item.foregroundColor(),_$p))
693
+ },get children(){var _el$=_$createElement4("text")
694
+ _$setProp4(_el$,"wrapMode","none")
695
+ _$setProp4(_el$,"truncate",true)
696
+ _$insert4(_el$,()=>props.label)
697
+ _$effect3((_$p)=>_$setProp4(_el$,"fg",item.foregroundColor(),_$p))
666
698
  return _el$
667
699
  }})
668
700
  }
@@ -671,33 +703,33 @@ const model=()=>props.controller.current().model
671
703
  const accountLink=createCodexAccountLink({api:props.api,preferences:props.preferences,adapter:props.codex,model,dialogs:useDialogs2(props.api)
672
704
  })
673
705
  const eligible=()=>(props.model.providerID==="openai"||props.model.hostConnection?.providerID==="openai")&&props.model.hostConnection?.method!=="api"
674
- const action=(id,row,label,onActivate)=>_$createComponent6(LimitsAction,{get api(){return props.api
706
+ const action=(id,row,label,onActivate)=>_$createComponent7(LimitsAction,{get api(){return props.api
675
707
  },get interaction(){return props.interaction
676
708
  },id:`${PLUGIN_ID}.limits.${id}`,get position(){return{section:props.navigationSection,row,column:0
677
709
  }},label,onActivate,get disabled(){return accountLink.busy()
678
710
  }})
679
- return _$createComponent6(Show,{get when(){return eligible()
680
- },get children(){return [_$createComponent6(Show,{get when(){return _$memo2(()=>!!!props.model.accountID)()&&(!props.model.hostConnection||props.model.hostConnection.status==="ready")
681
- },get children(){return [(()=>{var _el$=_$createElement4("text")
711
+ return _$createComponent7(Show2,{get when(){return eligible()
712
+ },get children(){return [_$createComponent7(Show2,{get when(){return _$memo2(()=>!!!props.model.accountID)()&&(!props.model.hostConnection||props.model.hostConnection.status==="ready")
713
+ },get children(){return [(()=>{var _el$=_$createElement5("text")
682
714
  _$insertNode3(_el$,_$createTextNode(`Link the matching Codex account once for this connection`))
683
- _$effect4((_$p)=>_$setProp4(_el$,"fg",props.api.theme.current.textMuted,_$p))
715
+ _$effect4((_$p)=>_$setProp5(_el$,"fg",props.api.theme.current.textMuted,_$p))
684
716
  return _el$
685
717
  })(),_$memo2(()=>action("link",2,`${icons.icon("scope")} Link Codex CLI account`,()=>void accountLink.link()))]
686
- }}),_$createComponent6(Show,{get when(){return _$memo2(()=>!!(props.model.accountID&&props.model.accountSource!=="host"))()&&props.controller.snapshot()?.availability==="unauthenticated"
687
- },get children(){return [_$memo2(()=>action("unlink",4,`${icons.icon("close")} Unlink Codex account`,()=>props.preferences.setCodexConnectionBinding(props.model.providerID,props.model.hostConnection?.id))),_$createComponent6(Show,{get when(){return props.controller.snapshot()?.availability==="unauthenticated"
718
+ }}),_$createComponent7(Show2,{get when(){return _$memo2(()=>!!(props.model.accountID&&props.model.accountSource!=="host"))()&&props.controller.snapshot()?.availability==="unauthenticated"
719
+ },get children(){return [_$memo2(()=>action("unlink",4,`${icons.icon("close")} Unlink Codex account`,()=>props.preferences.setCodexConnectionBinding(props.model.providerID,props.model.hostConnection?.id))),_$createComponent7(Show2,{get when(){return props.controller.snapshot()?.availability==="unauthenticated"
688
720
  },get children(){return action("relink",5,`${icons.icon("scope")} Relink Codex account`,()=>void accountLink.link())
689
721
  }})]
690
722
  }})]
691
723
  }})
692
724
  }
693
- import {createComponent as _$createComponent8} from "@opentui/solid"
694
- import {Show as Show2} from "solid-js"
725
+ import {createComponent as _$createComponent9} from "@opentui/solid"
726
+ import {Show as Show3} from "solid-js"
695
727
  import {useIcons as useIcons3} from "./tui.js"
696
- import {createComponent as _$createComponent7} from "@opentui/solid"
728
+ import {createComponent as _$createComponent8} from "@opentui/solid"
697
729
  import {effect as _$effect5} from "@opentui/solid"
698
- import {insert as _$insert4} from "@opentui/solid"
699
- import {setProp as _$setProp5} from "@opentui/solid"
700
- import {createElement as _$createElement5} from "@opentui/solid"
730
+ import {insert as _$insert5} from "@opentui/solid"
731
+ import {setProp as _$setProp6} from "@opentui/solid"
732
+ import {createElement as _$createElement6} from "@opentui/solid"
701
733
  import {memo as _$memo3} from "@opentui/solid"
702
734
  import {createEffect as createEffect2,createSignal as createSignal6,on} from "solid-js"
703
735
  import {SelectionBox as SelectionBox2} from "./tui.js"
@@ -721,7 +753,7 @@ const control=useSidebarItem(props.api,props.interaction,{id:props.action.id,pos
721
753
  },()=>props.api.theme.current.accent,"control")
722
754
  createEffect2(on(()=>[props.action.label(),props.resetWidth],()=>setWidth(undefined)))
723
755
  const label=()=>width()===undefined||props.iconOnly?props.action.label():truncateEnd(props.action.label(),width()-2)
724
- return _$createComponent7(SelectionBox2,{ref:(node)=>control.ref(node),get id(){return props.action.id
756
+ return _$createComponent8(SelectionBox2,{ref:(node)=>control.ref(node),get id(){return props.action.id
725
757
  },get iconOnly(){return props.iconOnly
726
758
  },get width(){return props.iconOnly?3:undefined
727
759
  },get flexShrink(){return props.iconOnly?0:1
@@ -732,42 +764,42 @@ return _$createComponent7(SelectionBox2,{ref:(node)=>control.ref(node),get id(){
732
764
  },get onMouseOut(){return control.onMouseOut
733
765
  },onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
734
766
  control.activate(event)
735
- },get children(){var _el$=_$createElement5("text")
736
- _$setProp5(_el$,"wrapMode","none")
737
- _$setProp5(_el$,"height",1)
738
- _$insert4(_el$,label)
739
- _$effect5((_$p)=>_$setProp5(_el$,"fg",control.foregroundColor(),_$p))
767
+ },get children(){var _el$=_$createElement6("text")
768
+ _$setProp6(_el$,"wrapMode","none")
769
+ _$setProp6(_el$,"height",1)
770
+ _$insert5(_el$,label)
771
+ _$effect5((_$p)=>_$setProp6(_el$,"fg",control.foregroundColor(),_$p))
740
772
  return _el$
741
773
  }})
742
774
  }
743
775
  function LimitsHeaderControls(props){const icons=useIcons3()
744
- return [_$createComponent8(Show2,{get when(){return props.credits
745
- },get children(){return _$createComponent8(SectionHeaderControl,{get api(){return props.api
776
+ return [_$createComponent9(Show3,{get when(){return props.credits
777
+ },get children(){return _$createComponent9(SectionHeaderControl,{get api(){return props.api
746
778
  },get interaction(){return props.interaction
747
779
  },get position(){return{section:props.navigationSection,row:0,column:1
748
780
  }},get action(){return{id:`${PLUGIN_ID}.limits.credits`,label:()=>"Banked Resets",disabled:()=>false,onActivate:props.onCredits
749
781
  }}})
750
- }}),_$createComponent8(SectionHeaderControl,{get api(){return props.api
782
+ }}),_$createComponent9(SectionHeaderControl,{get api(){return props.api
751
783
  },get interaction(){return props.interaction
752
784
  },iconOnly:true,get position(){return{section:props.navigationSection,row:0,column:2
753
785
  }},get action(){return{id:`${PLUGIN_ID}.limits.refresh`,label:()=>icons.icon(props.refreshing?"pending":"retry"),disabled:()=>props.refreshing||!props.canRefresh,onActivate:props.onRefresh
754
786
  }}})]
755
787
  }
756
- import {insert as _$insert5} from "@opentui/solid"
788
+ import {insert as _$insert6} from "@opentui/solid"
757
789
  import {effect as _$effect6} from "@opentui/solid"
758
790
  import {createTextNode as _$createTextNode2} from "@opentui/solid"
759
791
  import {insertNode as _$insertNode4} from "@opentui/solid"
760
792
  import {memo as _$memo4} from "@opentui/solid"
761
- import {createComponent as _$createComponent9} from "@opentui/solid"
762
- import {setProp as _$setProp6} from "@opentui/solid"
763
- import {createElement as _$createElement6} from "@opentui/solid"
764
- import {Show as Show3} from "solid-js"
793
+ import {createComponent as _$createComponent10} from "@opentui/solid"
794
+ import {setProp as _$setProp7} from "@opentui/solid"
795
+ import {createElement as _$createElement7} from "@opentui/solid"
796
+ import {Show as Show4} from "solid-js"
765
797
  function LimitsModelRow(props){const names=()=>props.selection?.names(props.model)??{provider:props.model.providerID,model:props.model.modelID
766
798
  }
767
- return(()=>{var _el$=_$createElement6("box")
768
- _$setProp6(_el$,"flexDirection","row")
769
- _$setProp6(_el$,"minWidth",0)
770
- _$insert5(_el$,_$createComponent9(LimitsAction,{get api(){return props.api
799
+ return(()=>{var _el$=_$createElement7("box")
800
+ _$setProp7(_el$,"flexDirection","row")
801
+ _$setProp7(_el$,"minWidth",0)
802
+ _$insert6(_el$,_$createComponent10(LimitsAction,{get api(){return props.api
771
803
  },get interaction(){return props.interaction
772
804
  },inline:true,flexGrow:1,get maxWidth(){return Bun.stringWidth(`[${names().provider}] ${names().model}`) + 2
773
805
  },id:`${PLUGIN_ID}.limits.model`,get position(){return{section:props.navigationSection,row:1,column:0
@@ -775,13 +807,13 @@ _$insert5(_el$,_$createComponent9(LimitsAction,{get api(){return props.api
775
807
  },get disabled(){return !props.selection?.canOpen("model",props.model)
776
808
  },onActivate:()=>props.selection?.open("model",props.model)
777
809
  }),null)
778
- _$insert5(_el$,_$createComponent9(Show3,{get when(){return props.model.variant||props.selection?.variants(props.model).length
779
- },get children(){return [(()=>{var _el$2=_$createElement6("text"),_el$3=_$createTextNode2(` \xB7 `)
810
+ _$insert6(_el$,_$createComponent10(Show4,{get when(){return props.model.variant||props.selection?.variants(props.model).length
811
+ },get children(){return [(()=>{var _el$2=_$createElement7("text"),_el$3=_$createTextNode2(` \xB7 `)
780
812
  _$insertNode4(_el$2,_el$3)
781
- _$setProp6(_el$2,"flexShrink",0)
782
- _$effect6((_$p)=>_$setProp6(_el$2,"fg",props.api.theme.current.textMuted,_$p))
813
+ _$setProp7(_el$2,"flexShrink",0)
814
+ _$effect6((_$p)=>_$setProp7(_el$2,"fg",props.api.theme.current.textMuted,_$p))
783
815
  return _el$2
784
- })(),_$createComponent9(LimitsAction,{get api(){return props.api
816
+ })(),_$createComponent10(LimitsAction,{get api(){return props.api
785
817
  },get interaction(){return props.interaction
786
818
  },inline:true,id:`${PLUGIN_ID}.limits.variant`,get position(){return{section:props.navigationSection,row:1,column:1
787
819
  }},get label(){return props.model.variant??"Default"
@@ -793,12 +825,12 @@ return _el$
793
825
  })()
794
826
  }
795
827
  import {effect as _$effect7} from "@opentui/solid"
796
- import {insert as _$insert6} from "@opentui/solid"
797
- import {setProp as _$setProp7} from "@opentui/solid"
798
- import {createElement as _$createElement7} from "@opentui/solid"
799
- import {createComponent as _$createComponent10} from "@opentui/solid"
828
+ import {insert as _$insert7} from "@opentui/solid"
829
+ import {setProp as _$setProp8} from "@opentui/solid"
830
+ import {createElement as _$createElement8} from "@opentui/solid"
831
+ import {createComponent as _$createComponent11} from "@opentui/solid"
800
832
  import {memo as _$memo5} from "@opentui/solid"
801
- import {Show as Show4} from "solid-js"
833
+ import {Show as Show5} from "solid-js"
802
834
  function LimitsStatus(props){const message=()=>{const model=props.controller.current().model
803
835
  const connection=model?.hostConnection
804
836
  const snapshot=props.controller.snapshot()
@@ -828,24 +860,24 @@ if(availability==="stale")
828
860
  return "Stale provider data \xB7 refresh to update"
829
861
  return `Updated ${new Date(snapshot.fetchedAt).toLocaleTimeString()}`
830
862
  }
831
- return _$createComponent10(Show4,{get when(){return _$memo5(()=>!!props.controller.current().model)()&&message()
832
- },children:(value)=>(()=>{var _el$=_$createElement7("text")
833
- _$setProp7(_el$,"wrapMode","word")
834
- _$insert6(_el$,value)
835
- _$effect7((_$p)=>_$setProp7(_el$,"fg",props.api.theme.current.textMuted,_$p))
863
+ return _$createComponent11(Show5,{get when(){return _$memo5(()=>!!props.controller.current().model)()&&message()
864
+ },children:(value)=>(()=>{var _el$=_$createElement8("text")
865
+ _$setProp8(_el$,"wrapMode","word")
866
+ _$insert7(_el$,value)
867
+ _$effect7((_$p)=>_$setProp8(_el$,"fg",props.api.theme.current.textMuted,_$p))
836
868
  return _el$
837
869
  })()
838
870
  })
839
871
  }
840
- import {createComponent as _$createComponent11} from "@opentui/solid"
872
+ import {createComponent as _$createComponent12} from "@opentui/solid"
841
873
  import {effect as _$effect8} from "@opentui/solid"
842
874
  import {createTextNode as _$createTextNode3} from "@opentui/solid"
843
875
  import {insertNode as _$insertNode5} from "@opentui/solid"
844
876
  import {memo as _$memo6} from "@opentui/solid"
845
- import {insert as _$insert7} from "@opentui/solid"
846
- import {setProp as _$setProp8} from "@opentui/solid"
847
- import {createElement as _$createElement8} from "@opentui/solid"
848
- import {Show as Show5,createSignal as createSignal7} from "solid-js"
877
+ import {insert as _$insert8} from "@opentui/solid"
878
+ import {setProp as _$setProp9} from "@opentui/solid"
879
+ import {createElement as _$createElement9} from "@opentui/solid"
880
+ import {Show as Show6,createSignal as createSignal7} from "solid-js"
849
881
  import {SelectionBox as SelectionBox3,useIcons as useIcons4} from "./tui.js"
850
882
  function Section(props){const icons=useIcons4()
851
883
  const [headerWidth,setHeaderWidth]=createSignal7(0)
@@ -854,59 +886,59 @@ const theme=()=>props.api.theme.current
854
886
  const item=useSidebarItem(props.api,props.interaction,{id:props.sectionId??`section.${props.title}`,position:()=>({section:props.navigationSection??0,row:0,column:0
855
887
  }),activate:props.onToggle
856
888
  })
857
- return(()=>{var _el$=_$createElement8("box")
858
- _$setProp8(_el$,"gap",1)
859
- _$insert7(_el$,_$createComponent11(SelectionBox3,{ref:(node)=>item.ref(node),get id(){return props.sectionId
889
+ return(()=>{var _el$=_$createElement9("box")
890
+ _$setProp9(_el$,"gap",1)
891
+ _$insert8(_el$,_$createComponent12(SelectionBox3,{ref:(node)=>item.ref(node),get id(){return props.sectionId
860
892
  },flexDirection:"row",height:1,justifyContent:"space-between",gap:1,get backgroundColor(){return item.backgroundColor()
861
893
  },get onMouseOver(){return item.onMouseOver
862
894
  },get onMouseOut(){return item.onMouseOut
863
895
  },onMouseDown:(event)=>item.activate(event),onSizeChange:function(){setHeaderWidth(this.width)
864
- },get children(){return [(()=>{var _el$2=_$createElement8("text"),_el$3=_$createElement8("span"),_el$4=_$createTextNode3(` `),_el$5=_$createElement8("span"),_el$6=_$createElement8("b")
896
+ },get children(){return [(()=>{var _el$2=_$createElement9("text"),_el$3=_$createElement9("span"),_el$4=_$createTextNode3(` `),_el$5=_$createElement9("span"),_el$6=_$createElement9("b")
865
897
  _$insertNode5(_el$2,_el$3)
866
898
  _$insertNode5(_el$2,_el$4)
867
899
  _$insertNode5(_el$2,_el$5)
868
900
  _$insertNode5(_el$2,_el$6)
869
- _$setProp8(_el$2,"flexShrink",0)
870
- _$setProp8(_el$2,"wrapMode","none")
871
- _$insert7(_el$3,()=>icons.icon(props.open?"expanded":"collapsed"))
872
- _$insert7(_el$5,(()=>{var _c$=_$memo6(()=>!!icon())
901
+ _$setProp9(_el$2,"flexShrink",0)
902
+ _$setProp9(_el$2,"wrapMode","none")
903
+ _$insert8(_el$3,()=>icons.icon(props.open?"expanded":"collapsed"))
904
+ _$insert8(_el$5,(()=>{var _c$=_$memo6(()=>!!icon())
873
905
  return()=>_c$()?`${icon()} `:""
874
906
  })())
875
- _$insert7(_el$6,()=>props.title)
907
+ _$insert8(_el$6,()=>props.title)
876
908
  _$effect8((_p$)=>{var _v$=item.foregroundColor(),_v$2={fg:item.focused()?item.foregroundColor():theme().accent
877
909
  },_v$3={fg:item.focused()?item.foregroundColor():theme().accent
878
910
  }
879
- _v$!==_p$.e&&(_p$.e=_$setProp8(_el$2,"fg",_v$,_p$.e))
880
- _v$2!==_p$.t&&(_p$.t=_$setProp8(_el$3,"style",_v$2,_p$.t))
881
- _v$3!==_p$.a&&(_p$.a=_$setProp8(_el$5,"style",_v$3,_p$.a))
911
+ _v$!==_p$.e&&(_p$.e=_$setProp9(_el$2,"fg",_v$,_p$.e))
912
+ _v$2!==_p$.t&&(_p$.t=_$setProp9(_el$3,"style",_v$2,_p$.t))
913
+ _v$3!==_p$.a&&(_p$.a=_$setProp9(_el$5,"style",_v$3,_p$.a))
882
914
  return _p$
883
915
  },{e:undefined,t:undefined,a:undefined
884
916
  })
885
917
  return _el$2
886
- })(),(()=>{var _el$7=_$createElement8("box")
887
- _$setProp8(_el$7,"flexDirection","row")
888
- _$setProp8(_el$7,"gap",1)
889
- _$setProp8(_el$7,"flexGrow",1)
890
- _$setProp8(_el$7,"minWidth",0)
891
- _$setProp8(_el$7,"justifyContent","flex-end")
892
- _$insert7(_el$7,()=>props.headerControls,null)
893
- _$insert7(_el$7,_$createComponent11(Show5,{get when(){return props.headerAction
894
- },children:(action)=>_$createComponent11(SectionHeaderControl,{get api(){return props.api
918
+ })(),(()=>{var _el$7=_$createElement9("box")
919
+ _$setProp9(_el$7,"flexDirection","row")
920
+ _$setProp9(_el$7,"gap",1)
921
+ _$setProp9(_el$7,"flexGrow",1)
922
+ _$setProp9(_el$7,"minWidth",0)
923
+ _$setProp9(_el$7,"justifyContent","flex-end")
924
+ _$insert8(_el$7,()=>props.headerControls,null)
925
+ _$insert8(_el$7,_$createComponent12(Show6,{get when(){return props.headerAction
926
+ },children:(action)=>_$createComponent12(SectionHeaderControl,{get api(){return props.api
895
927
  },get interaction(){return props.interaction
896
928
  },get action(){return action()
897
929
  },get resetWidth(){return headerWidth()
898
930
  },get position(){return{section:props.navigationSection??0,row:0,column:1
899
931
  }}})
900
932
  }),null)
901
- _$insert7(_el$7,_$createComponent11(Show5,{get when(){return props.summary
902
- },get children(){var _el$8=_$createElement8("text")
903
- _$setProp8(_el$8,"wrapMode","none")
904
- _$setProp8(_el$8,"truncate",true)
905
- _$setProp8(_el$8,"height",1)
906
- _$insert7(_el$8,()=>props.summary)
933
+ _$insert8(_el$7,_$createComponent12(Show6,{get when(){return props.summary
934
+ },get children(){var _el$8=_$createElement9("text")
935
+ _$setProp9(_el$8,"wrapMode","none")
936
+ _$setProp9(_el$8,"truncate",true)
937
+ _$setProp9(_el$8,"height",1)
938
+ _$insert8(_el$8,()=>props.summary)
907
939
  _$effect8((_p$)=>{var _v$4=item.focused()?item.foregroundColor():theme().textMuted,_v$5=props.headerAction?0:1
908
- _v$4!==_p$.e&&(_p$.e=_$setProp8(_el$8,"fg",_v$4,_p$.e))
909
- _v$5!==_p$.t&&(_p$.t=_$setProp8(_el$8,"flexShrink",_v$5,_p$.t))
940
+ _v$4!==_p$.e&&(_p$.e=_$setProp9(_el$8,"fg",_v$4,_p$.e))
941
+ _v$5!==_p$.t&&(_p$.t=_$setProp9(_el$8,"flexShrink",_v$5,_p$.t))
910
942
  return _p$
911
943
  },{e:undefined,t:undefined
912
944
  })
@@ -915,7 +947,7 @@ return _el$8
915
947
  return _el$7
916
948
  })()]
917
949
  }}),null)
918
- _$insert7(_el$,_$createComponent11(Show5,{get when(){return props.open
950
+ _$insert8(_el$,_$createComponent12(Show6,{get when(){return props.open
919
951
  },get children(){return props.children
920
952
  }}),null)
921
953
  return _el$
@@ -926,17 +958,17 @@ const model=()=>props.controller.current().model
926
958
  const snapshot=props.controller.snapshot
927
959
  function openCredits(){const selected=model()
928
960
  if(selected)
929
- dialogs.open(()=>_$createComponent12(ResetCreditDialog,{get api(){return props.api
961
+ dialogs.open(()=>_$createComponent13(ResetCreditDialog,{get api(){return props.api
930
962
  },get preferences(){return props.preferences
931
963
  },get controller(){return props.controller
932
964
  },get adapter(){return props.codex
933
965
  },model:selected
934
966
  }))
935
967
  }
936
- return _$createComponent12(Section,{get api(){return props.api
968
+ return _$createComponent13(Section,{get api(){return props.api
937
969
  },get interaction(){return props.interaction
938
970
  },sectionId:`${PLUGIN_ID}.section.limits`,get navigationSection(){return props.navigationSection
939
- },title:"LIMITS",section:"limits",summary:"",get headerControls(){return _$createComponent12(LimitsHeaderControls,{get api(){return props.api
971
+ },title:"LIMITS",section:"limits",summary:"",get headerControls(){return _$createComponent13(LimitsHeaderControls,{get api(){return props.api
940
972
  },get interaction(){return props.interaction
941
973
  },get navigationSection(){return props.navigationSection
942
974
  },get credits(){return(snapshot()?.bankedResets?.availableCount??0)>0||Boolean(props.preferences.pendingResetAttempt())
@@ -945,28 +977,28 @@ return _$createComponent12(Section,{get api(){return props.api
945
977
  },onCredits:openCredits,onRefresh:()=>void props.controller.refresh(true)
946
978
  })
947
979
  },get open(){return props.preferences.expanded().limits
948
- },onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$createComponent12(Show6,{get when(){return model()
949
- },get fallback(){return(()=>{var _el$=_$createElement9("text")
980
+ },onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$createComponent13(Show7,{get when(){return model()
981
+ },get fallback(){return(()=>{var _el$=_$createElement10("text")
950
982
  _$insertNode6(_el$,_$createTextNode4(`Open a session to view model limits`))
951
- _$effect9((_$p)=>_$setProp9(_el$,"fg",props.api.theme.current.textMuted,_$p))
983
+ _$effect9((_$p)=>_$setProp10(_el$,"fg",props.api.theme.current.textMuted,_$p))
952
984
  return _el$
953
985
  })()
954
- },children:(selected)=>(()=>{var _el$3=_$createElement9("box")
955
- _$setProp9(_el$3,"width","100%")
956
- _$setProp9(_el$3,"minWidth",0)
957
- _$setProp9(_el$3,"flexShrink",1)
958
- _$setProp9(_el$3,"overflow","hidden")
959
- _$insert8(_el$3,_$createComponent12(LimitsModelRow,_$mergeProps(props,{get model(){return selected()
986
+ },children:(selected)=>(()=>{var _el$3=_$createElement10("box")
987
+ _$setProp10(_el$3,"width","100%")
988
+ _$setProp10(_el$3,"minWidth",0)
989
+ _$setProp10(_el$3,"flexShrink",1)
990
+ _$setProp10(_el$3,"overflow","hidden")
991
+ _$insert9(_el$3,_$createComponent13(LimitsModelRow,_$mergeProps(props,{get model(){return selected()
960
992
  },get selection(){return props.modelSelection
961
993
  }})),null)
962
- _$insert8(_el$3,_$createComponent12(CodexAccountControls,_$mergeProps(props,{get model(){return selected()
994
+ _$insert9(_el$3,_$createComponent13(CodexAccountControls,_$mergeProps(props,{get model(){return selected()
963
995
  }})),null)
964
- _$insert8(_el$3,_$createComponent12(Show6,{get when(){return _$memo7(()=>!!(snapshot()&&["ready","stale"].includes(snapshot().availability)))()?snapshot():undefined
965
- },children:(quota)=>_$createComponent12(QuotaSnapshotRows,{get api(){return props.api
996
+ _$insert9(_el$3,_$createComponent13(Show7,{get when(){return _$memo7(()=>!!(snapshot()&&["ready","stale"].includes(snapshot().availability)))()?snapshot():undefined
997
+ },children:(quota)=>_$createComponent13(QuotaSnapshotRows,{get api(){return props.api
966
998
  },get snapshot(){return quota()
967
999
  }})
968
1000
  }),null)
969
- _$insert8(_el$3,_$createComponent12(LimitsStatus,{get api(){return props.api
1001
+ _$insert9(_el$3,_$createComponent13(LimitsStatus,{get api(){return props.api
970
1002
  },get controller(){return props.controller
971
1003
  }}),null)
972
1004
  return _el$3
package/dist/tui.js CHANGED
@@ -3,7 +3,7 @@ import {insert as _$insert,setProp as _$setProp,createElement as _$createElement
3
3
 
4
4
 
5
5
 
6
- import {createSignal as createSignal2,createSignal,createEffect,onCleanup,createContext,useContext,createContext as createContext2,createSignal as createSignal3,useContext as useContext2,createEffect as createEffect2,splitProps,untrack,splitProps as splitProps2,For,createEffect as createEffect3,onCleanup as onCleanup2,createEffect as createEffect4,Show,splitProps as splitProps3,createSignal as createSignal4,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup3,batch,createSignal as createSignal8,createSignal as createSignal7,createEffect as createEffect5,createSignal as createSignal9,onCleanup as onCleanup4,createSignal as createSignal10,createSignal as createSignal11,Index,createSignal as createSignal12,onCleanup as onCleanup5,createEffect as createEffect7,onCleanup as onCleanup7,batch as batch2,createEffect as createEffect6,createMemo,createSignal as createSignal13,onCleanup as onCleanup6,onMount,For as For2,For as For3,Show as Show2,createMemo as createMemo2,Show as Show3,createSignal as createSignal14,onCleanup as onCleanup8,For as For4,For as For5,For as For8,createMemo as createMemo4,onMount as onMount3,For as For7,createMemo as createMemo3,onMount as onMount2,Show as Show5,createEffect as createEffect8,createSignal as createSignal15,onCleanup as onCleanup9,Show as Show4,For as For6,For as For9,createEffect as createEffect9,createMemo as createMemo5,onCleanup as onCleanup10,createEffect as createEffect10,createMemo as createMemo6,untrack as untrack2,For as For10,createEffect as createEffect11,createMemo as createMemo8,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo7,Show as Show6,onCleanup as onCleanup12,createEffect as createEffect12,onCleanup as onCleanup13,createSignal as createSignal16,createMemo as createMemo9,createEffect as createEffect13,onCleanup as onCleanup14,onMount as onMount5,onCleanup as onCleanup15,onMount as onMount6,For as For11,createSignal as createSignal17,createSignal as createSignal18,Show as Show7,createSignal as createSignal20,createSignal as createSignal19,onCleanup as onCleanup16,For as For12,Show as Show10,createMemo as createMemo11,createComputed,createMemo as createMemo10,createSignal as createSignal21,untrack as untrack3,Show as Show8,createComputed as createComputed2,untrack as untrack4,Show as Show9,createSignal as createSignal23,createEffect as createEffect14,createSignal as createSignal22,on,createMemo as createMemo13,createSignal as createSignal26,createMemo as createMemo12,For as For13,Show as Show14,Show as Show11,Show as Show12,createSignal as createSignal24,createContext as createContext3,useContext as useContext3,Show as Show13,createSignal as createSignal25,onCleanup as onCleanup17,Show as Show19,createSignal as createSignal27,untrack as untrack5,createSignal as createSignal28,createSignal as createSignal29,createEffect as createEffect15,For as For14,Show as Show15,Show as Show16,Show as Show17,Show as Show18,For as For15,Show as Show21,createMemo as createMemo15,Show as Show20,createMemo as createMemo14,createSignal as createSignal30,createEffect as createEffect16,onCleanup as onCleanup18,For as For20,Match,Switch,createMemo as createMemo19,onCleanup as onCleanup22,For as For16,Show as Show22,createSignal as createSignal31,createEffect as createEffect17,createMemo as createMemo16,onCleanup as onCleanup19,untrack as untrack6,For as For18,Show as Show25,createEffect as createEffect18,createMemo as createMemo17,createSignal as createSignal32,onCleanup as onCleanup20,untrack as untrack7,For as For17,Show as Show24,Show as Show23,Show as Show29,createEffect as createEffect19,createMemo as createMemo18,createSignal as createSignal33,onCleanup as onCleanup21,untrack as untrack8,For as For19,Show as Show27,Show as Show26,Show as Show28,createEffect as createEffect20,createMemo as createMemo20,onCleanup as onCleanup23,untrack as untrack9,Show as Show30,createMemo as createMemo21,onCleanup as onCleanup24,createEffect as createEffect21,createMemo as createMemo22,on as on2,onCleanup as onCleanup25,createSignal as createSignal34,onCleanup as onCleanup26,onMount as onMount7} from "solid-js"
6
+ import {createSignal as createSignal2,createSignal,createEffect,onCleanup,createContext,useContext,createContext as createContext2,createSignal as createSignal3,useContext as useContext2,createEffect as createEffect2,splitProps,untrack,splitProps as splitProps2,For,createEffect as createEffect3,onCleanup as onCleanup2,createEffect as createEffect4,Show,splitProps as splitProps3,createSignal as createSignal4,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup3,batch,createSignal as createSignal8,createSignal as createSignal7,createEffect as createEffect5,createSignal as createSignal9,onCleanup as onCleanup4,createSignal as createSignal10,createSignal as createSignal11,Index,createSignal as createSignal12,onCleanup as onCleanup5,createEffect as createEffect7,onCleanup as onCleanup7,batch as batch2,createEffect as createEffect6,createMemo,createSignal as createSignal13,onCleanup as onCleanup6,onMount,For as For2,For as For3,Show as Show2,createMemo as createMemo2,Show as Show3,createSignal as createSignal14,onCleanup as onCleanup8,For as For4,For as For5,For as For8,createMemo as createMemo4,onMount as onMount3,For as For7,createMemo as createMemo3,onMount as onMount2,Show as Show5,createEffect as createEffect8,createSignal as createSignal15,onCleanup as onCleanup9,Show as Show4,For as For6,For as For9,createEffect as createEffect9,createMemo as createMemo5,onCleanup as onCleanup10,createEffect as createEffect10,createMemo as createMemo6,untrack as untrack2,For as For10,createEffect as createEffect11,createMemo as createMemo8,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo7,Show as Show6,onCleanup as onCleanup12,createEffect as createEffect12,onCleanup as onCleanup13,createSignal as createSignal16,createMemo as createMemo9,createEffect as createEffect13,onCleanup as onCleanup14,onMount as onMount5,onCleanup as onCleanup15,onMount as onMount6,For as For11,createSignal as createSignal17,createSignal as createSignal18,Show as Show7,createSignal as createSignal20,createSignal as createSignal19,onCleanup as onCleanup16,For as For12,Show as Show10,createMemo as createMemo11,createComputed,createMemo as createMemo10,createSignal as createSignal21,untrack as untrack3,Show as Show8,createComputed as createComputed2,untrack as untrack4,Show as Show9,createSignal as createSignal23,createEffect as createEffect14,createSignal as createSignal22,on,createMemo as createMemo13,createSignal as createSignal26,createMemo as createMemo12,For as For13,Show as Show14,Show as Show11,Show as Show12,createSignal as createSignal24,createContext as createContext3,useContext as useContext3,Show as Show13,createSignal as createSignal25,onCleanup as onCleanup17,Show as Show20,createSignal as createSignal27,untrack as untrack5,createSignal as createSignal28,createSignal as createSignal29,createEffect as createEffect15,For as For15,Show as Show15,For as For14,Show as Show16,Show as Show17,Show as Show18,Show as Show19,For as For16,Show as Show22,createMemo as createMemo15,Show as Show21,createMemo as createMemo14,createSignal as createSignal30,createEffect as createEffect16,onCleanup as onCleanup18,For as For21,Match,Switch,createMemo as createMemo19,onCleanup as onCleanup22,For as For17,Show as Show23,createSignal as createSignal31,createEffect as createEffect17,createMemo as createMemo16,onCleanup as onCleanup19,untrack as untrack6,For as For19,Show as Show26,createEffect as createEffect18,createMemo as createMemo17,createSignal as createSignal32,onCleanup as onCleanup20,untrack as untrack7,For as For18,Show as Show25,Show as Show24,Show as Show30,createEffect as createEffect19,createMemo as createMemo18,createSignal as createSignal33,onCleanup as onCleanup21,untrack as untrack8,For as For20,Show as Show28,Show as Show27,Show as Show29,createEffect as createEffect20,createMemo as createMemo20,onCleanup as onCleanup23,untrack as untrack9,Show as Show31,createMemo as createMemo21,onCleanup as onCleanup24,createEffect as createEffect21,createMemo as createMemo22,on as on2,onCleanup as onCleanup25,createSignal as createSignal34,onCleanup as onCleanup26,onMount as onMount7} from "solid-js"
7
7
  var SIDEBAR_SECTIONS=["limits","todo","subagents","skills","quick_actions","lsp","mcp"]
8
8
  var QUICK_ACTION_IDS=["session.rename","session.timeline","session.copy","session.export","session.compact","session.list","session.new","session.fork","messages.copy","session.first","session.last","session.messages_last_user","session.message.next","session.message.previous","permission.mode"]
9
9
  function preferencesScope(path){return path.worktree||path.directory||"global"
@@ -6182,6 +6182,11 @@ return _$createComponent(SectionWithHeaderAction,{get api(){return props.api
6182
6182
 
6183
6183
 
6184
6184
 
6185
+
6186
+
6187
+
6188
+
6189
+
6185
6190
 
6186
6191
 
6187
6192
 
@@ -6236,7 +6241,7 @@ _$insert(_el$2,()=>props.action.label)
6236
6241
  _$effect((_$p)=>_$setProp(_el$2,"fg",row.foregroundColor(),_$p))
6237
6242
  return _el$2
6238
6243
  })()
6239
- },get metadata(){return _$createComponent(Show20,{get when(){return visibleShortcut()
6244
+ },get metadata(){return _$createComponent(Show21,{get when(){return visibleShortcut()
6240
6245
  },children:(value)=>(()=>{var _el$3=_$createElement("text")
6241
6246
  _$setProp(_el$3,"flexShrink",0)
6242
6247
  _$setProp(_el$3,"wrapMode","none")
@@ -6245,7 +6250,7 @@ _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme()
6245
6250
  return _el$3
6246
6251
  })()
6247
6252
  })
6248
- },get details(){return _$createComponent(Show20,{get when(){return props.disabled
6253
+ },get details(){return _$createComponent(Show21,{get when(){return props.disabled
6249
6254
  },children:(reason)=>(()=>{var _el$4=_$createElement("text")
6250
6255
  _$setProp(_el$4,"wrapMode","word")
6251
6256
  _$insert(_el$4,reason)
@@ -6273,12 +6278,12 @@ return _$createComponent(Section,{get api(){return props.api
6273
6278
  },onToggle:()=>props.preferences.toggleSectionExpanded("quick_actions"),get children(){return [_$createComponent(SidebarRowList,{get api(){return props.api
6274
6279
  },get interaction(){return props.interaction
6275
6280
  },get density(){return props.preferences.rowDensity?.()??"compact"
6276
- },get children(){return [_$createComponent(Show21,{get when(){return actions().length===0
6281
+ },get children(){return [_$createComponent(Show22,{get when(){return actions().length===0
6277
6282
  },get children(){var _el$=_$createElement("text")
6278
6283
  _$insertNode(_el$,_$createTextNode(`No quick actions selected`))
6279
6284
  _$effect((_$p)=>_$setProp(_el$,"fg",props.api.theme.current.textMuted,_$p))
6280
6285
  return _el$
6281
- }}),_$createComponent(For15,{get each(){return visibility.visible()
6286
+ }}),_$createComponent(For16,{get each(){return visibility.visible()
6282
6287
  },children:(action,index)=>_$createComponent(QuickActionRow,{get onNewSession(){return props.onNewSession
6283
6288
  },action,get disabled(){return action.disabled
6284
6289
  },get favorite(){return props.preferences.favoriteQuickActions?.().has(action.command)??false
@@ -6521,7 +6526,7 @@ _$insert(_el$,_$createComponent(SectionFilter,{get api(){return props.api
6521
6526
  }},get query(){return query()
6522
6527
  },placeholder:"Filter skills...",onInput:setQuery
6523
6528
  }),null)
6524
- _$insert(_el$,_$createComponent(Show22,{get when(){return model.filtered().length>0
6529
+ _$insert(_el$,_$createComponent(Show23,{get when(){return model.filtered().length>0
6525
6530
  },get fallback(){return(()=>{var _el$2=_$createElement("text")
6526
6531
  _$insertNode(_el$2,_$createTextNode(`No matching skills`))
6527
6532
  _$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
@@ -6531,8 +6536,8 @@ return _el$2
6531
6536
  },get interaction(){return props.interaction
6532
6537
  },get grouped(){return model.grouped
6533
6538
  },get density(){return props.preferences.rowDensity?.()??"compact"
6534
- },get children(){return _$createComponent(For16,{get each(){return model.visibility.visible()
6535
- },children:(item,index)=>[_$createComponent(Show22,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
6539
+ },get children(){return _$createComponent(For17,{get each(){return model.visibility.visible()
6540
+ },children:(item,index)=>[_$createComponent(Show23,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
6536
6541
  },get children(){var _el$4=_$createElement("text")
6537
6542
  _$setProp(_el$4,"height",1)
6538
6543
  _$setProp(_el$4,"wrapMode","none")
@@ -6659,7 +6664,7 @@ return()=>_c$()?`${props.item.run.startedBeforeObservation ? `${icons.icon("rece
6659
6664
  _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme().textMuted,_$p))
6660
6665
  return _el$3
6661
6666
  })()
6662
- },get details(){return [_$createComponent(Show23,{get when(){return props.item.run?.errorMessage
6667
+ },get details(){return [_$createComponent(Show24,{get when(){return props.item.run?.errorMessage
6663
6668
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createTextNode(`: `)
6664
6669
  _$insertNode(_el$4,_el$5)
6665
6670
  _$setProp(_el$4,"wrapMode","word")
@@ -6667,12 +6672,12 @@ _$insert(_el$4,()=>cancelled()?"Cancelled":"Error",_el$5)
6667
6672
  _$insert(_el$4,()=>props.item.run?.errorMessage,null)
6668
6673
  _$effect((_$p)=>_$setProp(_el$4,"fg",row.focused()?row.foregroundColor():failed()?theme().error:theme().textMuted,_$p))
6669
6674
  return _el$4
6670
- }}),_$createComponent(Show23,{get when(){return props.item.unavailable
6675
+ }}),_$createComponent(Show24,{get when(){return props.item.unavailable
6671
6676
  },get children(){var _el$6=_$createElement("text")
6672
6677
  _$insertNode(_el$6,_$createTextNode(`Worker status unavailable`))
6673
6678
  _$effect((_$p)=>_$setProp(_el$6,"fg",theme().warning,_$p))
6674
6679
  return _el$6
6675
- }}),_$createComponent(Show23,{get when(){return _$memo(()=>props.item.status.type==="retry")()?props.item.status:undefined
6680
+ }}),_$createComponent(Show24,{get when(){return _$memo(()=>props.item.status.type==="retry")()?props.item.status:undefined
6676
6681
  },children:(status)=>(()=>{var _el$0=_$createElement("text"),_el$1=_$createTextNode(`Retry #`),_el$10=_$createTextNode(` \xB7 `),_el$11=_$createTextNode(`s \xB7 `)
6677
6682
  _$insertNode(_el$0,_el$1)
6678
6683
  _$insertNode(_el$0,_el$10)
@@ -6684,7 +6689,7 @@ _$insert(_el$0,()=>status().message,null)
6684
6689
  _$effect((_$p)=>_$setProp(_el$0,"fg",row.focused()?row.foregroundColor():theme().warning,_$p))
6685
6690
  return _el$0
6686
6691
  })()
6687
- }),_$createComponent(Show23,{get when(){return _$memo(()=>!!idle())()&&!props.item.run?.errorMessage
6692
+ }),_$createComponent(Show24,{get when(){return _$memo(()=>!!idle())()&&!props.item.run?.errorMessage
6688
6693
  },get children(){var _el$8=_$createElement("text")
6689
6694
  _$insertNode(_el$8,_$createTextNode(`Finished`))
6690
6695
  _$effect((_$p)=>_$setProp(_el$8,"fg",theme().textMuted,_$p))
@@ -6695,12 +6700,12 @@ return _el$8
6695
6700
  function SubagentList(props){return _$createComponent(SidebarRowList,{get api(){return props.api
6696
6701
  },get interaction(){return props.interaction
6697
6702
  },get density(){return props.density
6698
- },get children(){return _$createComponent(For17,{get each(){return props.ids
6703
+ },get children(){return _$createComponent(For18,{get each(){return props.ids
6699
6704
  },children:(id,index)=>{const initial=props.itemById(id)
6700
6705
  const item=()=>props.itemById(id)??initial
6701
6706
  const startsGroup=()=>index()===0||props.visible[index()-1]?.group!==item().group
6702
6707
  return(()=>{var _el$=_$createElement("box")
6703
- _$insert(_el$,_$createComponent(Show24,{get when(){return startsGroup()
6708
+ _$insert(_el$,_$createComponent(Show25,{get when(){return startsGroup()
6704
6709
  },get children(){var _el$2=_$createElement("text"),_el$3=_$createElement("b")
6705
6710
  _$insertNode(_el$2,_el$3)
6706
6711
  _$insert(_el$3,()=>item().group)
@@ -6726,7 +6731,7 @@ return _$createComponent(Section,{get api(){return props.api
6726
6731
  },sectionId:`${PLUGIN_ID}.section.subagents`,get navigationSection(){return navigationSection()
6727
6732
  },title:"SUBAGENTS",section:"subagents",get summary(){return `${model.list().length} active \xB7 ${model.recent().length} recent`
6728
6733
  },get open(){return props.preferences.expanded().subagents
6729
- },onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(Show25,{get when(){return model.parentID()
6734
+ },onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(Show26,{get when(){return model.parentID()
6730
6735
  },children:(id)=>_$createComponent(McpBulkAction,{get api(){return props.api
6731
6736
  },get interaction(){return props.interaction
6732
6737
  },id:`${PLUGIN_ID}.subagents.parent`,get position(){return{section:navigationSection(),row:1,column:0
@@ -6749,7 +6754,7 @@ _$insert(_el$,_$createComponent(SectionFilter,{get api(){return props.api
6749
6754
  }}),_el$2)
6750
6755
  _$setProp(_el$2,"flexDirection","row")
6751
6756
  _$setProp(_el$2,"flexWrap","wrap")
6752
- _$insert(_el$2,_$createComponent(For18,{get each(){return model.tabs()
6757
+ _$insert(_el$2,_$createComponent(For19,{get each(){return model.tabs()
6753
6758
  },children:(value,index)=>_$createComponent(SectionTab,{get api(){return props.api
6754
6759
  },get interaction(){return props.interaction
6755
6760
  },id:`${PLUGIN_ID}.subagents.filter.${value}`,get position(){return{section:navigationSection(),row:4,column:index()
@@ -6760,7 +6765,7 @@ _$insert(_el$2,_$createComponent(For18,{get each(){return model.tabs()
6760
6765
  },onActivate:()=>model.setMode(value)
6761
6766
  })
6762
6767
  }))
6763
- _$insert(_el$,_$createComponent(Show25,{get when(){return model.filtered().length===0
6768
+ _$insert(_el$,_$createComponent(Show26,{get when(){return model.filtered().length===0
6764
6769
  },get children(){var _el$3=_$createElement("text")
6765
6770
  _$insertNode(_el$3,_$createTextNode(`No matching subagents`))
6766
6771
  _$effect((_$p)=>_$setProp(_el$3,"fg",props.api.theme.current.textMuted,_$p))
@@ -6844,7 +6849,7 @@ _$insert(_el$2,()=>icons.icon(done()?"done":active()?"busy":cancelled()?"close":
6844
6849
  _$setProp(_el$3,"flexGrow",1)
6845
6850
  _$setProp(_el$3,"wrapMode","word")
6846
6851
  _$insert(_el$3,()=>props.item.content)
6847
- _$insert(_el$,_$createComponent(Show26,{get when(){return props.item.priority==="high"||props.item.priority==="medium"||props.item.priority==="low"
6852
+ _$insert(_el$,_$createComponent(Show27,{get when(){return props.item.priority==="high"||props.item.priority==="medium"||props.item.priority==="low"
6848
6853
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b"),_el$6=_$createTextNode(` `)
6849
6854
  _$insertNode(_el$4,_el$5)
6850
6855
  _$setProp(_el$4,"width",2)
@@ -6871,7 +6876,7 @@ _$insertNode(_el$,_el$2)
6871
6876
  _$setProp(_el$,"gap",1)
6872
6877
  _$setProp(_el$2,"flexDirection","row")
6873
6878
  _$setProp(_el$2,"flexWrap","wrap")
6874
- _$insert(_el$2,_$createComponent(For19,{each:["all","active","finished"],children:(value,index)=>_$createComponent(SectionTab,{get api(){return props.api
6879
+ _$insert(_el$2,_$createComponent(For20,{each:["all","active","finished"],children:(value,index)=>_$createComponent(SectionTab,{get api(){return props.api
6875
6880
  },get interaction(){return props.interaction
6876
6881
  },id:`${PLUGIN_ID}.todo.filter.${value}`,get position(){return{section:navigationSection(),row:tabsRow(),column:index()
6877
6882
  }},get label(){return value[0].toUpperCase() + value.slice(1)
@@ -6880,17 +6885,17 @@ _$insert(_el$2,_$createComponent(For19,{each:["all","active","finished"],childre
6880
6885
  },onActivate:()=>props.setMode(value)
6881
6886
  })
6882
6887
  }))
6883
- _$insert(_el$,_$createComponent(Show27,{get when(){return props.view.rows.length>0
6888
+ _$insert(_el$,_$createComponent(Show28,{get when(){return props.view.rows.length>0
6884
6889
  },get fallback(){return _$createComponent(EmptyTodo,{get api(){return props.api
6885
6890
  },get mode(){return props.mode
6886
6891
  }})
6887
6892
  },get children(){return _$createComponent(SidebarRowList,{get api(){return props.api
6888
6893
  },get interaction(){return props.interaction
6889
6894
  },get density(){return props.density
6890
- },get children(){return _$createComponent(For19,{get each(){return props.visibility.visible()
6895
+ },get children(){return _$createComponent(For20,{get each(){return props.visibility.visible()
6891
6896
  },children:(row,index)=>{const startsGroup=()=>index()===0||props.visibility.visible()[index()-1].group!==row.group
6892
6897
  return(()=>{var _el$3=_$createElement("box")
6893
- _$insert(_el$3,_$createComponent(Show27,{get when(){return startsGroup()
6898
+ _$insert(_el$3,_$createComponent(Show28,{get when(){return startsGroup()
6894
6899
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b")
6895
6900
  _$insertNode(_el$4,_el$5)
6896
6901
  _$insert(_el$5,()=>row.group)
@@ -6927,7 +6932,7 @@ return _el$6
6927
6932
 
6928
6933
 
6929
6934
  function TodoGuidanceControl(props){const state=()=>props.controller.guidance(props.sessionID)
6930
- return _$createComponent(Show28,{get when(){return state().available
6935
+ return _$createComponent(Show29,{get when(){return state().available
6931
6936
  },get children(){var _el$=_$createElement("box")
6932
6937
  _$insert(_el$,_$createComponent(SectionTab,{get api(){return props.api
6933
6938
  },get interaction(){return props.interaction
@@ -6937,7 +6942,7 @@ _$insert(_el$,_$createComponent(SectionTab,{get api(){return props.api
6937
6942
  },get disabled(){return state().saving
6938
6943
  },onActivate:()=>void props.controller.setGuidance(props.sessionID,!state().enabled)
6939
6944
  }),null)
6940
- _$insert(_el$,_$createComponent(Show28,{get when(){return state().error
6945
+ _$insert(_el$,_$createComponent(Show29,{get when(){return state().error
6941
6946
  },children:(message)=>(()=>{var _el$2=_$createElement("text")
6942
6947
  _$setProp(_el$2,"wrapMode","word")
6943
6948
  _$insert(_el$2,message)
@@ -6975,10 +6980,10 @@ return _$createComponent(Section,{get api(){return props.api
6975
6980
  },sectionId:`${PLUGIN_ID}.section.todo`,get navigationSection(){return navigationSection()
6976
6981
  },title:"TODO",section:"todo",get summary(){return _$memo(()=>!!(unavailable()||managed()?.missing(props.sessionID)))()?"\u2014":`${view().counts.completed}/${list().length}`
6977
6982
  },get open(){return props.preferences.expanded().todo
6978
- },onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show29,{get when(){return unavailable()
6983
+ },onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show30,{get when(){return unavailable()
6979
6984
  },get fallback(){return(()=>{var _el$=_$createElement("box")
6980
6985
  _$setProp(_el$,"gap",1)
6981
- _$insert(_el$,_$createComponent(Show29,{get when(){return managed()?.guidance(props.sessionID).available
6986
+ _$insert(_el$,_$createComponent(Show30,{get when(){return managed()?.guidance(props.sessionID).available
6982
6987
  },get children(){return _$createComponent(TodoGuidanceControl,{get api(){return props.api
6983
6988
  },get controller(){return managed()
6984
6989
  },get sessionID(){return props.sessionID
@@ -6986,7 +6991,7 @@ _$insert(_el$,_$createComponent(Show29,{get when(){return managed()?.guidance(pr
6986
6991
  },get navigationSection(){return navigationSection()
6987
6992
  }})
6988
6993
  }}),null)
6989
- _$insert(_el$,_$createComponent(Show29,{get when(){return managed()?.missing(props.sessionID)
6994
+ _$insert(_el$,_$createComponent(Show30,{get when(){return managed()?.missing(props.sessionID)
6990
6995
  },get fallback(){return _$createComponent(SectionRequestBody,{get api(){return props.api
6991
6996
  },get interaction(){return props.interaction
6992
6997
  },id:`${PLUGIN_ID}.retry.todo`,get position(){return{section:navigationSection(),row:1,column:0
@@ -7035,7 +7040,7 @@ event.preventDefault()
7035
7040
  event.stopPropagation()
7036
7041
  props.interaction.leave()
7037
7042
  })
7038
- _$insert(_el$,_$createComponent(For20,{get each(){return visibleSections()
7043
+ _$insert(_el$,_$createComponent(For21,{get each(){return visibleSections()
7039
7044
  },children:(section,index)=>_$createComponent(SectionBoundary,{get api(){return props.api
7040
7045
  },get divided(){return index()<visibleSections().length-1
7041
7046
  },get children(){return _$createComponent(Switch,{get children(){return [_$createComponent(Match,{when:section==="limits",get children(){return props.limitsSection(index() + 1)
@@ -7130,7 +7135,7 @@ _$setProp(_el$2,"flexDirection","row")
7130
7135
  _$setProp(_el$2,"justifyContent","space-between")
7131
7136
  _$setProp(_el$2,"gap",1)
7132
7137
  _$setProp(_el$3,"flexGrow",1)
7133
- _$insert(_el$3,_$createComponent(Show30,{get when(){return props.preferences.showSessionTitle()
7138
+ _$insert(_el$3,_$createComponent(Show31,{get when(){return props.preferences.showSessionTitle()
7134
7139
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b")
7135
7140
  _$insertNode(_el$4,_el$5)
7136
7141
  _$setProp(_el$4,"wrapMode","word")
@@ -7138,7 +7143,7 @@ _$insert(_el$5,()=>props.title)
7138
7143
  _$effect((_$p)=>_$setProp(_el$4,"fg",theme().text,_$p))
7139
7144
  return _el$4
7140
7145
  }}),null)
7141
- _$insert(_el$3,_$createComponent(Show30,{get when(){return _$memo(()=>!!props.preferences.showSessionDate())()&&created()
7146
+ _$insert(_el$3,_$createComponent(Show31,{get when(){return _$memo(()=>!!props.preferences.showSessionDate())()&&created()
7142
7147
  },children:(value)=>(()=>{var _el$6=_$createElement("text")
7143
7148
  _$insert(_el$6,value)
7144
7149
  _$effect((_$p)=>_$setProp(_el$6,"fg",theme().textMuted,_$p))
@@ -7515,7 +7520,7 @@ const limitsPath=import.meta.url.includes("/dist/tui.js")?"./provider-limits.js"
7515
7520
  const limitsModule=await import(limitsPath)
7516
7521
  const LimitsSection=limitsModule.ProviderLimitsSection
7517
7522
  const{controller:limits,codex,accountSource,selectModel,modelSelection
7518
- }=limitsModule.createProviderQuotaIntegration(api,preferences,"0.21.5",hostContext)
7523
+ }=limitsModule.createProviderQuotaIntegration(api,preferences,"0.21.7",hostContext)
7519
7524
  const mcp=createMcpController(api,preferences.persistMcp,preferences)
7520
7525
  const interaction=createSidebarInteraction(api,()=>openKeyboardHelp(api,preferences.lspIconStyle,preferences.cornerFont))
7521
7526
  const startup=createStartupSessionController(api,preferences)
@@ -7543,7 +7548,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
7543
7548
  },interaction,skills,subagents,mcp
7544
7549
  }),_$createComponent(FirstRunWizardPersistence,{api,preferences
7545
7550
  }),_$createComponent(StartupSessionBinding,{api,controller:startup
7546
- }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.21.5"
7551
+ }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.21.7"
7547
7552
  }),_$createComponent(McpPersistence,{api,controller:mcp
7548
7553
  })]
7549
7554
  }})
@@ -7576,12 +7581,12 @@ return result.data?.type==="text"?result.data.content:undefined
7576
7581
  })
7577
7582
  const{createVersionStatus,createVersionUpdateActions,createOpenCodeV1VersionUpdater
7578
7583
  }=await loadNavigatorUpdates()
7579
- const versionStatus=createVersionStatus(api,"0.21.5")
7580
- const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.5"))
7584
+ const versionStatus=createVersionStatus(api,"0.21.7")
7585
+ const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.7"))
7581
7586
  api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7582
7587
  },get multilineCorners(){return preferences.cornerFont
7583
7588
  },get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
7584
- },navigatorVersion:"0.21.5",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7589
+ },navigatorVersion:"0.21.7",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7585
7590
  },get onNavigatorUpdate(){return versionUpdates.navigator
7586
7591
  }})
7587
7592
  }})
@@ -7597,15 +7602,15 @@ return new TextDecoder().decode(await context.client.file.read({location:context
7597
7602
  },todo,context)
7598
7603
  const{createVersionStatus,createVersionUpdateActions,createOpenCodeV2VersionUpdater
7599
7604
  }=await loadNavigatorUpdates()
7600
- const versionStatus=createVersionStatus(adapter.api,"0.21.5")
7601
- const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.5"))
7605
+ const versionStatus=createVersionStatus(adapter.api,"0.21.7")
7606
+ const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.7"))
7602
7607
  const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7603
7608
  },get multilineCorners(){return preferences.cornerFont
7604
7609
  },get children(){var _el$=_$createElement("box")
7605
7610
  _$setProp(_el$,"flexDirection","row")
7606
7611
  _$setProp(_el$,"justifyContent","space-between")
7607
7612
  _$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
7608
- },navigatorVersion:"0.21.5",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7613
+ },navigatorVersion:"0.21.7",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7609
7614
  },get onNavigatorUpdate(){return versionUpdates.navigator
7610
7615
  }}),null)
7611
7616
  _$insert(_el$,_$createComponent(SettingsFooterButton,{get api(){return adapter.api
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "opencode-navigator",
4
- "version": "0.21.5",
4
+ "version": "0.21.7",
5
5
  "description": "Search, navigate, and manage OpenCode sessions from the TUI",
6
6
  "type": "module",
7
7
  "packageManager": "bun@1.4.2",