From 988529537be098713211cd2042f0808b2046ff3d Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Tue, 21 Oct 2025 10:04:16 +0300 Subject: Enha: show dynamic status line in help page --- main.go | 1 + tui.go | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/main.go b/main.go index 82027c6..0b54495 100644 --- a/main.go +++ b/main.go @@ -11,6 +11,7 @@ import ( var ( botRespMode = false editMode = false + injectRole = true selectedIndex = int(-1) indexLine = "F12 to show keys help | bot resp mode: [orange:-:b]%v[-:-:-] (F6) | card's char: [orange:-:b]%s[-:-:-] (ctrl+s) | chat: [orange:-:b]%s[-:-:-] (F1) | toolUseAdviced: [orange:-:b]%v[-:-:-] (ctrl+k) | model: [orange:-:b]%s[-:-:-] (ctrl+l) | skip LLM resp: [orange:-:b]%v[-:-:-] (F10)\nAPI_URL: [orange:-:b]%s[-:-:-] (ctrl+v) | ThinkUse: [orange:-:b]%v[-:-:-] (ctrl+p) | Log Level: [orange:-:b]%v[-:-:-] (ctrl+p) | Recording: [orange:-:b]%v[-:-:-] (ctrl+r) | Writing as: [orange:-:b]%s[-:-:-] (ctrl+q)" indexLineCompletion = "F12 to show keys help | bot resp mode: [orange:-:b]%v[-:-:-] (F6) | card's char: [orange:-:b]%s[-:-:-] (ctrl+s) | chat: [orange:-:b]%s[-:-:-] (F1) | toolUseAdviced: [orange:-:b]%v[-:-:-] (ctrl+k) | model: [orange:-:b]%s[-:-:-] (ctrl+l) | skip LLM resp: [orange:-:b]%v[-:-:-] (F10)\nAPI_URL: [orange:-:b]%s[-:-:-] (ctrl+v) | ThinkUse: [orange:-:b]%v[-:-:-] (ctrl+p) | Log Level: [orange:-:b]%v[-:-:-] (ctrl+p) | Recording: [orange:-:b]%v[-:-:-] (ctrl+r) | Writing as: [orange:-:b]%s[-:-:-] (ctrl+q) | Bot will write as [orange:-:b]%s[-:-:-] (ctrl+x)" diff --git a/tui.go b/tui.go index d97a9f3..dc8a17a 100644 --- a/tui.go +++ b/tui.go @@ -75,6 +75,8 @@ var ( [yellow]Ctrl+q[white]: cycle through mentioned chars in chat, to pick persona to send next msg as [yellow]Ctrl+x[white]: cycle through mentioned chars in chat, to pick persona to send next msg as (for llm) +%s + Press Enter to go back ` colorschemes = map[string]tview.Theme{ @@ -214,7 +216,7 @@ func colorText() { textView.SetText(text) } -func updateStatusLine() { +func makeStatusLine() string { isRecording := false if asr != nil { isRecording = asr.IsRecording() @@ -223,17 +225,18 @@ func updateStatusLine() { if cfg.WriteNextMsgAs != "" { persona = cfg.WriteNextMsgAs } - if strings.Contains(cfg.CurrentAPI, "chat") { - position.SetText(fmt.Sprintf(indexLine, botRespMode, cfg.AssistantRole, activeChatName, cfg.ToolUse, chatBody.Model, - cfg.SkipLLMResp, cfg.CurrentAPI, cfg.ThinkUse, logLevel.Level(), isRecording, persona)) - return - } botPersona := cfg.AssistantRole if cfg.WriteNextMsgAsCompletionAgent != "" { botPersona = cfg.WriteNextMsgAsCompletionAgent } - position.SetText(fmt.Sprintf(indexLineCompletion, botRespMode, cfg.AssistantRole, activeChatName, cfg.ToolUse, chatBody.Model, - cfg.SkipLLMResp, cfg.CurrentAPI, cfg.ThinkUse, logLevel.Level(), isRecording, persona, botPersona)) + statusLine := fmt.Sprintf(indexLineCompletion, botRespMode, cfg.AssistantRole, activeChatName, cfg.ToolUse, chatBody.Model, + cfg.SkipLLMResp, cfg.CurrentAPI, cfg.ThinkUse, logLevel.Level(), isRecording, persona, botPersona) + return statusLine +} + +func updateStatusLine() { + position.SetText(makeStatusLine()) + helpView.SetText(fmt.Sprintf(helpText, makeStatusLine())) } func initSysCards() ([]string, error) { @@ -533,9 +536,11 @@ func init() { return event }) // - helpView = tview.NewTextView().SetDynamicColors(true).SetText(helpText).SetDoneFunc(func(key tcell.Key) { - pages.RemovePage(helpPage) - }) + helpView = tview.NewTextView().SetDynamicColors(true). + SetText(fmt.Sprintf(helpText, makeStatusLine())). + SetDoneFunc(func(key tcell.Key) { + pages.RemovePage(helpPage) + }) helpView.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { switch event.Key() { case tcell.KeyEsc, tcell.KeyEnter: -- cgit v1.2.3