on main help sign in
chore: changes after rebase
commitfca9fbbf2619a7acc0822d6f6822382618a62337 authorKujtim Hoxha <kujtimii.h@gmail.com> dateMon 7 Jul 2025, 11:49 (1 year ago) parent4941a7e
4 files changed+38−21
internal/config/init.go+8 internal/tui/components/chat/chat.go−3 internal/tui/components/dialogs/models/list.go+29−17 internal/tui/components/dialogs/models/models.go+1−1
internal/config/init.go+8
@@ -103,3 +103,11 @@ func MarkProjectInitialized() error {
103103
104104 return nil
105105}
106+
107+func HasInitialDataConfig() bool {
108+ cfgPath := globalConfigData()
109+ if _, err := os.Stat(cfgPath); err != nil {
110+ return false
111+ }
112+ return true
113+}
internal/tui/components/chat/chat.go−3
@@ -8,7 +8,6 @@ import (
88 tea "github.com/charmbracelet/bubbletea/v2"
99 "github.com/charmbracelet/crush/internal/app"
1010 "github.com/charmbracelet/crush/internal/llm/agent"
11− "github.com/charmbracelet/crush/internal/logging"
1211 "github.com/charmbracelet/crush/internal/message"
1312 "github.com/charmbracelet/crush/internal/pubsub"
1413 "github.com/charmbracelet/crush/internal/session"
@@ -81,7 +80,6 @@ func (m *messageListCmp) Init() tea.Cmd {
8180
8281// Update handles incoming messages and updates the component state.
8382func (m *messageListCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
84− logging.Info("messageListCmp.Update", "msg", msg)
8583 switch msg := msg.(type) {
8684 case SessionSelectedMsg:
8785 if msg.ID != m.session.ID {
@@ -380,7 +378,6 @@ func (m *messageListCmp) handleNewAssistantMessage(msg message.Message) tea.Cmd
380378
381379// SetSession loads and displays messages for a new session.
382380func (m *messageListCmp) SetSession(session session.Session) tea.Cmd {
383− logging.Info("messageListCmp.SetSession", "sessionID", session.ID)
384381 if m.session.ID == session.ID {
385382 return nil
386383 }
internal/tui/components/dialogs/models/list.go+29−17
@@ -61,34 +61,43 @@ func (m *ModelListComponent) SelectedIndex() int {
6161func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
6262 m.modelType = modelType
6363
64− providers := config.Providers()
64+ providers, err := config.Providers()
65+ if err != nil {
66+ return util.ReportError(err)
67+ }
68+
6569 modelItems := []util.Model{}
6670 selectIndex := 0
6771
6872 cfg := config.Get()
69− var currentModel config.PreferredModel
73+ var currentModel config.SelectedModel
7074 if m.modelType == LargeModelType {
71− currentModel = cfg.Models.Large
75+ currentModel = cfg.Models[config.SelectedModelTypeLarge]
7276 } else {
73− currentModel = cfg.Models.Small
77+ currentModel = cfg.Models[config.SelectedModelTypeSmall]
7478 }
7579
76− addedProviders := make(map[provider.InferenceProvider]bool)
80+ // Create a map to track which providers we've already added
81+ addedProviders := make(map[string]bool)
7782
83+ // First, add any configured providers that are not in the known providers list
84+ // These should appear at the top of the list
7885 knownProviders := provider.KnownProviders()
7986 for providerID, providerConfig := range cfg.Providers {
80− if providerConfig.Disabled {
87+ if providerConfig.Disable {
8188 continue
8289 }
8390
8491 // Check if this provider is not in the known providers list
85− if !slices.Contains(knownProviders, providerID) {
92+ if !slices.Contains(knownProviders, provider.InferenceProvider(providerID)) {
93+ // Convert config provider to provider.Provider format
8694 configProvider := provider.Provider{
87− Name: string(providerID),
88− ID: providerID,
95+ Name: string(providerID), // Use provider ID as name for unknown providers
96+ ID: provider.InferenceProvider(providerID),
8997 Models: make([]provider.Model, len(providerConfig.Models)),
9098 }
9199
100+ // Convert models
92101 for i, model := range providerConfig.Models {
93102 configProvider.Models[i] = provider.Model{
94103 ID: model.ID,
@@ -101,11 +110,12 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
101110 DefaultMaxTokens: model.DefaultMaxTokens,
102111 CanReason: model.CanReason,
103112 HasReasoningEffort: model.HasReasoningEffort,
104− DefaultReasoningEffort: model.ReasoningEffort,
113+ DefaultReasoningEffort: model.DefaultReasoningEffort,
105114 SupportsImages: model.SupportsImages,
106115 }
107116 }
108117
118+ // Add this unknown provider to the list
109119 name := configProvider.Name
110120 if name == "" {
111121 name = string(configProvider.ID)
@@ -116,20 +126,23 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
116126 Provider: configProvider,
117127 Model: model,
118128 }))
119− if model.ID == currentModel.ModelID && configProvider.ID == currentModel.Provider {
120− selectIndex = len(modelItems) - 1
129+ if model.ID == currentModel.Model && string(configProvider.ID) == currentModel.Provider {
130+ selectIndex = len(modelItems) - 1 // Set the selected index to the current model
121131 }
122132 }
123133 addedProviders[providerID] = true
124134 }
125135 }
126136
137+ // Then add the known providers from the predefined list
127138 for _, provider := range providers {
128− if addedProviders[provider.ID] {
139+ // Skip if we already added this provider as an unknown provider
140+ if addedProviders[string(provider.ID)] {
129141 continue
130142 }
131143
132− if providerConfig, exists := cfg.Providers[provider.ID]; exists && providerConfig.Disabled {
144+ // Check if this provider is configured and not disabled
145+ if providerConfig, exists := cfg.Providers[string(provider.ID)]; exists && providerConfig.Disable {
133146 continue
134147 }
135148
@@ -143,8 +156,8 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
143156 Provider: provider,
144157 Model: model,
145158 }))
146− if model.ID == currentModel.ModelID && provider.ID == currentModel.Provider {
147− selectIndex = len(modelItems) - 1
159+ if model.ID == currentModel.Model && string(provider.ID) == currentModel.Provider {
160+ selectIndex = len(modelItems) - 1 // Set the selected index to the current model
148161 }
149162 }
150163 }
@@ -156,4 +169,3 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
156169func (m *ModelListComponent) GetModelType() int {
157170 return m.modelType
158171}
159−
internal/tui/components/dialogs/models/models.go+1−1
@@ -105,7 +105,7 @@ func (m *modelDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
105105
106106 var modelType config.SelectedModelType
107107 if m.modelList.GetModelType() == LargeModelType {
108− modelType = config.LargeModel
108+ modelType = config.SelectedModelTypeLarge
109109 } else {
110110 modelType = config.SelectedModelTypeSmall
111111 }