diff options
author | Grail Finder <wohilas@gmail.com> | 2025-01-24 09:24:37 +0300 |
---|---|---|
committer | Grail Finder <wohilas@gmail.com> | 2025-01-24 09:24:37 +0300 |
commit | 3374080ba01e601c2c05aecc114b6c0a53b60f76 (patch) | |
tree | 518c875aa51ce391927033ec193f85f6e7e0b888 | |
parent | 75f51c1a19632ea093e1aad6a91cc7f4a349658c (diff) |
Feat: chat preview
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | tables.go | 26 | ||||
-rw-r--r-- | tui.go | 10 |
3 files changed, 29 insertions, 9 deletions
@@ -41,6 +41,8 @@ - change temp, min-p and other params from tui; - DRY; - keybind to switch between openai and llamacpp endpoints; +- option to remove <thinking> from chat history; +- in chat management table add preview of the last message; ### FIX: - bot responding (or hanging) blocks everything; + @@ -6,32 +6,48 @@ import ( "path" "time" + "elefant/models" "elefant/rag" "github.com/gdamore/tcell/v2" "github.com/rivo/tview" ) -func makeChatTable(chatList []string) *tview.Table { +func makeChatTable(chatMap map[string]models.Chat) *tview.Table { actions := []string{"load", "rename", "delete"} - rows, cols := len(chatList), len(actions)+1 + chatList := make([]string, len(chatMap)) + i := 0 + for name := range chatMap { + chatList[i] = name + i++ + } + rows, cols := len(chatMap), len(actions)+2 chatActTable := tview.NewTable(). SetBorders(true) + // for chatName, chat := range chatMap { for r := 0; r < rows; r++ { + // r := 0 for c := 0; c < cols; c++ { color := tcell.ColorWhite - if c < 1 { + switch c { + case 0: chatActTable.SetCell(r, c, tview.NewTableCell(chatList[r]). SetTextColor(color). SetAlign(tview.AlignCenter)) - } else { + case 1: chatActTable.SetCell(r, c, - tview.NewTableCell(actions[c-1]). + tview.NewTableCell(chatMap[chatList[r]].Msgs[len(chatMap[chatList[r]].Msgs)-30:]). + SetTextColor(color). + SetAlign(tview.AlignCenter)) + default: + chatActTable.SetCell(r, c, + tview.NewTableCell(actions[c-2]). SetTextColor(color). SetAlign(tview.AlignCenter)) } } + // r++ } chatActTable.Select(0, 0).SetFixed(1, 1).SetDoneFunc(func(key tcell.Key) { if key == tcell.KeyEsc || key == tcell.KeyF1 { @@ -340,11 +340,13 @@ func init() { logger.Error("failed to load chat history", "error", err) return nil } - nameList := make([]string, len(chatList)) - for i, chat := range chatList { - nameList[i] = chat.Name + chatMap := make(map[string]models.Chat) + // nameList := make([]string, len(chatList)) + for _, chat := range chatList { + // nameList[i] = chat.Name + chatMap[chat.Name] = chat } - chatActTable := makeChatTable(nameList) + chatActTable := makeChatTable(chatMap) pages.AddPage(historyPage, chatActTable, true, true) colorText() updateStatusLine() |