summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-14 07:38:21 -0500
committeradamdottv <[email protected]>2025-05-14 07:38:21 -0500
commit463002185b18955583af0c8695648c2ae03fe03f (patch)
tree4cef5f4dabff347caff4f9681606379b553c71fe
parent53a80eac1ed1ec98122a9c2b332f302903078f0a (diff)
downloadopencode-463002185b18955583af0c8695648c2ae03fe03f.tar.gz
opencode-463002185b18955583af0c8695648c2ae03fe03f.zip
fix: log perf
-rw-r--r--internal/tui/components/logs/table.go28
1 files changed, 17 insertions, 11 deletions
diff --git a/internal/tui/components/logs/table.go b/internal/tui/components/logs/table.go
index f78e4c490..5632d163c 100644
--- a/internal/tui/components/logs/table.go
+++ b/internal/tui/components/logs/table.go
@@ -11,7 +11,6 @@ import (
"github.com/sst/opencode/internal/tui/components/chat"
"github.com/sst/opencode/internal/tui/layout"
"github.com/sst/opencode/internal/tui/theme"
- "github.com/sst/opencode/internal/tui/util"
)
type TableComponent interface {
@@ -21,9 +20,10 @@ type TableComponent interface {
}
type tableCmp struct {
- table table.Model
- focused bool
- logs []logging.Log
+ table table.Model
+ focused bool
+ logs []logging.Log
+ selectedLogID string
}
type selectedLogMsg logging.Log
@@ -103,17 +103,23 @@ func (i *tableCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
cmds = append(cmds, cmd)
i.table = t
- // Only send selected log message when selection changes
selectedRow := i.table.SelectedRow()
if selectedRow != nil {
- // Use a map for faster lookups by ID
- for _, log := range i.logs {
- if log.ID == selectedRow[0] {
- cmds = append(cmds, util.CmdHandler(selectedLogMsg(log)))
- break
- }
+ // Only send message if it's a new selection
+ if i.selectedLogID != selectedRow[0] {
+ cmds = append(cmds, func() tea.Msg {
+ for _, log := range i.logs {
+ if log.ID == selectedRow[0] {
+ return selectedLogMsg(log)
+ }
+ }
+ return nil
+ })
}
+
}
+
+ i.selectedLogID = selectedRow[0]
return i, tea.Batch(cmds...)
}