summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrail Finder <wohilas@gmail.com>2025-08-07 06:43:02 +0300
committerGrail Finder <wohilas@gmail.com>2025-08-07 06:43:02 +0300
commitc58f251745a6dce587aad07d4d25d9520a863a59 (patch)
tree3689fa3bc8f599dd8971915a9df6d52d0f214440
parent39e8f557cf043d1f1004bbf925330b2a7f264bfc (diff)
Enha: export chat to export dir
-rw-r--r--.gitignore1
-rw-r--r--pngmeta/metareader.go6
-rw-r--r--session.go6
-rw-r--r--tui.go7
4 files changed, 12 insertions, 8 deletions
diff --git a/.gitignore b/.gitignore
index 6ec208c..77a54f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ history_bak/
.aider*
tags
gf-lt
+chat_exports/*.json
diff --git a/pngmeta/metareader.go b/pngmeta/metareader.go
index 8d3059e..7053546 100644
--- a/pngmeta/metareader.go
+++ b/pngmeta/metareader.go
@@ -126,9 +126,8 @@ func ReadDirCards(dirname, uname string, log *slog.Logger) ([]*models.CharCard,
fpath := path.Join(dirname, f.Name())
cc, err := ReadCard(fpath, uname)
if err != nil {
- log.Warn("failed to load card", "error", err)
+ log.Warn("failed to load card", "error", err, "card", fpath)
continue
- // return nil, err // better to log and continue
}
resp = append(resp, cc)
}
@@ -136,7 +135,8 @@ func ReadDirCards(dirname, uname string, log *slog.Logger) ([]*models.CharCard,
fpath := path.Join(dirname, f.Name())
cc, err := ReadCardJson(fpath)
if err != nil {
- return nil, err // better to log and continue
+ log.Warn("failed to load card", "error", err, "card", fpath)
+ continue
}
cc.FirstMsg = strings.ReplaceAll(strings.ReplaceAll(cc.FirstMsg, "{{char}}", cc.Role), "{{user}}", uname)
cc.SysPrompt = strings.ReplaceAll(strings.ReplaceAll(cc.SysPrompt, "{{char}}", cc.Role), "{{user}}", uname)
diff --git a/session.go b/session.go
index dbfa645..ee03397 100644
--- a/session.go
+++ b/session.go
@@ -1,12 +1,13 @@
package main
import (
- "gf-lt/models"
"encoding/json"
"errors"
"fmt"
+ "gf-lt/models"
"os"
"os/exec"
+ "path"
"path/filepath"
"strings"
"time"
@@ -32,7 +33,8 @@ func exportChat() error {
if err != nil {
return err
}
- return os.WriteFile(activeChatName+".json", data, 0666)
+ fp := path.Join(exportDir, activeChatName+".json")
+ return os.WriteFile(fp, data, 0666)
}
func importChat(filename string) error {
diff --git a/tui.go b/tui.go
index 0dab6f0..b563797 100644
--- a/tui.go
+++ b/tui.go
@@ -42,6 +42,7 @@ var (
propsPage = "propsPage"
codeBlockPage = "codeBlockPage"
imgPage = "imgPage"
+ exportDir = "chat_exports"
// help text
helpText = `
[yellow]Esc[white]: send msg
@@ -618,19 +619,19 @@ func init() {
}
if event.Key() == tcell.KeyF11 {
// read files in chat_exports
- dirname := "chat_exports"
- filelist, err := os.ReadDir(dirname)
+ filelist, err := os.ReadDir(exportDir)
if err != nil {
if err := notifyUser("failed to load exports", err.Error()); err != nil {
logger.Error("failed to send notification", "error", err)
}
+ return nil
}
fli := []string{}
for _, f := range filelist {
if f.IsDir() || !strings.HasSuffix(f.Name(), ".json") {
continue
}
- fpath := path.Join(dirname, f.Name())
+ fpath := path.Join(exportDir, f.Name())
fli = append(fli, fpath)
}
// check error