Fix: KnowTo is added only if tag present
This commit is contained in:
23
bot.go
23
bot.go
@@ -124,18 +124,19 @@ func processMessageTag(msg models.RoleMsg) models.RoleMsg {
|
||||
// For simplicity, if knownTo is not nil, replace.
|
||||
if knownTo != nil {
|
||||
msg.KnownTo = knownTo
|
||||
}
|
||||
// Ensure sender role is in KnownTo
|
||||
if msg.Role != "" {
|
||||
senderAdded := false
|
||||
for _, k := range msg.KnownTo {
|
||||
if k == msg.Role {
|
||||
senderAdded = true
|
||||
break
|
||||
// Only ensure sender role is in KnownTo if there was a tag
|
||||
// This means the message is intended for specific characters
|
||||
if msg.Role != "" {
|
||||
senderAdded := false
|
||||
for _, k := range msg.KnownTo {
|
||||
if k == msg.Role {
|
||||
senderAdded = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !senderAdded {
|
||||
msg.KnownTo = append(msg.KnownTo, msg.Role)
|
||||
}
|
||||
}
|
||||
if !senderAdded {
|
||||
msg.KnownTo = append(msg.KnownTo, msg.Role)
|
||||
}
|
||||
}
|
||||
return msg
|
||||
|
||||
@@ -436,7 +436,7 @@ func TestProcessMessageTag(t *testing.T) {
|
||||
wantMsg: models.RoleMsg{
|
||||
Role: "Alice",
|
||||
Content: "Hello everyone",
|
||||
KnownTo: []string{"Alice"},
|
||||
KnownTo: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
13
tui.go
13
tui.go
@@ -93,6 +93,7 @@ var (
|
||||
[yellow]Alt+4[white]: edit msg role
|
||||
[yellow]Alt+5[white]: toggle system and tool messages display
|
||||
[yellow]Alt+6[white]: toggle status line visibility
|
||||
[yellow]Alt+7[white]: toggle role injection (inject role in messages)
|
||||
[yellow]Alt+8[white]: show char img or last picked img
|
||||
[yellow]Alt+9[white]: warm up (load) selected llama.cpp model
|
||||
|
||||
@@ -828,6 +829,18 @@ func init() {
|
||||
}
|
||||
updateStatusLine()
|
||||
}
|
||||
// Handle Alt+7 to toggle injectRole
|
||||
if event.Key() == tcell.KeyRune && event.Rune() == '7' && event.Modifiers()&tcell.ModAlt != 0 {
|
||||
injectRole = !injectRole
|
||||
status := "disabled"
|
||||
if injectRole {
|
||||
status = "enabled"
|
||||
}
|
||||
if err := notifyUser("injectRole", fmt.Sprintf("Role injection %s", status)); err != nil {
|
||||
logger.Error("failed to send notification", "error", err)
|
||||
}
|
||||
updateStatusLine()
|
||||
}
|
||||
if event.Key() == tcell.KeyF1 {
|
||||
// chatList, err := loadHistoryChats()
|
||||
chatList, err := store.GetChatByChar(cfg.AssistantRole)
|
||||
|
||||
Reference in New Issue
Block a user