diff --git a/helpfuncs.go b/helpfuncs.go index 09751e3..d407d1e 100644 --- a/helpfuncs.go +++ b/helpfuncs.go @@ -354,10 +354,15 @@ func makeStatusLine() string { } // Get model color based on load status for local llama.cpp models modelColor := getModelColor() - statusLine := fmt.Sprintf(indexLineCompletion, boolColors[botRespMode], botRespMode, activeChatName, + statusLine := fmt.Sprintf(statusLineTempl, boolColors[botRespMode], botRespMode, activeChatName, boolColors[cfg.ToolUse], cfg.ToolUse, modelColor, chatBody.Model, boolColors[cfg.SkipLLMResp], cfg.SkipLLMResp, cfg.CurrentAPI, boolColors[isRecording], isRecording, persona, - botPersona, boolColors[injectRole], injectRole) + botPersona) + // completion endpoint + if !strings.Contains(cfg.CurrentAPI, "chat") { + roleInject := fmt.Sprintf(" | role injection [%s:-:b]%v[-:-:-] (alt+7)", boolColors[injectRole], injectRole) + statusLine += roleInject + } return statusLine + imageInfo + shellModeInfo } @@ -741,7 +746,6 @@ func scanFiles(dir, filter string) []string { const maxDepth = 3 const maxFiles = 50 var files []string - var scanRecursive func(currentDir string, currentDepth int, relPath string) scanRecursive = func(currentDir string, currentDepth int, relPath string) { if len(files) >= maxFiles { @@ -750,39 +754,33 @@ func scanFiles(dir, filter string) []string { if currentDepth > maxDepth { return } - entries, err := os.ReadDir(currentDir) if err != nil { return } - for _, entry := range entries { if len(files) >= maxFiles { return } - name := entry.Name() if strings.HasPrefix(name, ".") { continue } - fullPath := name if relPath != "" { fullPath = relPath + "/" + name } - if entry.IsDir() { // Recursively scan subdirectories scanRecursive(filepath.Join(currentDir, name), currentDepth+1, fullPath) - } else { - // Check if file matches filter - if filter == "" || strings.HasPrefix(strings.ToLower(fullPath), strings.ToLower(filter)) { - files = append(files, fullPath) - } + continue + } + // Check if file matches filter + if filter == "" || strings.HasPrefix(strings.ToLower(fullPath), strings.ToLower(filter)) { + files = append(files, fullPath) } } } - scanRecursive(dir, 0, "") return files } diff --git a/main.go b/main.go index 7557d04..2347139 100644 --- a/main.go +++ b/main.go @@ -5,16 +5,16 @@ import ( ) var ( - boolColors = map[bool]string{true: "green", false: "red"} - botRespMode = false - editMode = false - roleEditMode = false - injectRole = true - selectedIndex = int(-1) - shellMode = false - thinkingCollapsed = false - indexLineCompletion = "F12 to show keys help | llm turn: [%s:-:b]%v[-:-:-] (F6) | chat: [orange:-:b]%s[-:-:-] (F1) | toolUseAdviced: [%s:-:b]%v[-:-:-] (ctrl+k) | model: [%s:-:b]%s[-:-:-] (ctrl+l) | skip LLM resp: [%s:-:b]%v[-:-:-] (F10)\nAPI: [orange:-:b]%s[-:-:-] (ctrl+v) | recording: [%s:-:b]%v[-:-:-] (ctrl+r) | writing as: [orange:-:b]%s[-:-:-] (ctrl+q) | bot will write as [orange:-:b]%s[-:-:-] (ctrl+x) | role injection (alt+7) [%s:-:b]%v[-:-:-]" - focusSwitcher = map[tview.Primitive]tview.Primitive{} + boolColors = map[bool]string{true: "green", false: "red"} + botRespMode = false + editMode = false + roleEditMode = false + injectRole = true + selectedIndex = int(-1) + shellMode = false + thinkingCollapsed = false + statusLineTempl = "help (F12) | llm turn: [%s:-:b]%v[-:-:-] (F6) | chat: [orange:-:b]%s[-:-:-] (F1) |tool-use: [%s:-:b]%v[-:-:-] (ctrl+k) | model: [%s:-:b]%s[-:-:-] (ctrl+l) | skip LLM resp: [%s:-:b]%v[-:-:-] (F10)\nAPI: [orange:-:b]%s[-:-:-] (ctrl+v) | voice recording: [%s:-:b]%v[-:-:-] (ctrl+r) | writing as: [orange:-:b]%s[-:-:-] (ctrl+q) | bot will write as [orange:-:b]%s[-:-:-] (ctrl+x)" + focusSwitcher = map[tview.Primitive]tview.Primitive{} ) func main() { diff --git a/popups.go b/popups.go index f584f3c..b0ee4ae 100644 --- a/popups.go +++ b/popups.go @@ -388,7 +388,7 @@ func showFileCompletionPopup(filter string) { app.SetFocus(widget) } -func updateWidgetColors(theme tview.Theme) { +func updateWidgetColors(theme *tview.Theme) { bgColor := theme.PrimitiveBackgroundColor fgColor := theme.PrimaryTextColor borderColor := theme.BorderColor @@ -476,7 +476,7 @@ func showColorschemeSelectionPopup() { tview.Styles = theme go func() { app.QueueUpdateDraw(func() { - updateWidgetColors(theme) + updateWidgetColors(&theme) }) }() } diff --git a/tables.go b/tables.go index a69bb1a..f25c7e1 100644 --- a/tables.go +++ b/tables.go @@ -1046,6 +1046,7 @@ func makeFilePicker() *tview.Flex { if bracketPos := strings.Index(itemText, " ["); bracketPos != -1 { actualItemName = itemText[:bracketPos] } + // nolint: gocritic if strings.HasPrefix(actualItemName, "../") { targetDir = path.Dir(currentDisplayDir) } else if strings.HasSuffix(actualItemName, "/") { diff --git a/tui.go b/tui.go index 018e7e4..588e368 100644 --- a/tui.go +++ b/tui.go @@ -835,6 +835,7 @@ func init() { lastMsg := chatBody.Messages[len(chatBody.Messages)-1] cleanedText := models.CleanText(lastMsg.Content) if cleanedText != "" { + // nolint: errcheck go orator.Speak(cleanedText) } }