Skip to content

Commit 5cdcb8f

Browse files
committed
🚀 feat: implement non-blocking Reactor module for async rendering
1 parent e62c154 commit 5cdcb8f

1 file changed

Lines changed: 19 additions & 17 deletions

File tree

‎cmd/vibeaura/chat.go‎

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@ import (
1515
"time"
1616

1717
"github.com/charmbracelet/bubbles/textarea"
18-
"github.com/charmbracelet/bubbles/viewport"
19-
tea "github.com/charmbracelet/bubbletea"
20-
"github.com/charmbracelet/glamour"
21-
"github.com/charmbracelet/lipgloss"
22-
"github.com/google/uuid"
23-
"github.com/nathfavour/vibeauracle/brain"
18+
"github.com/charmbracelet/bubbles/viewport"
19+
tea "github.com/charmbracelet/bubbletea"
20+
"github.com/charmbracelet/lipgloss"
21+
"github.com/google/uuid"
22+
"github.com/nathfavour/vibeauracle/brain"
2423
"github.com/nathfavour/vibeauracle/internal/doctor"
2524
"github.com/nathfavour/vibeauracle/reactor"
2625
vmodel "github.com/nathfavour/vibeauracle/model"
@@ -130,16 +129,18 @@ type model struct {
130129
// Dynamic Commands from Extensions
131130
dynamicCommands map[string]brain.CLICommand
132131

133-
// Non-blocking Engine
134-
reactor *reactor.Reactor
135-
md *reactor.MarkdownRenderer
136-
}
137-
type layoutMsg struct {
138-
content string
139-
wasAtBottom bool
140-
wasAtTop bool
141-
prevOffset int
142-
}
132+
// Non-blocking Engine
133+
reactor *reactor.Reactor
134+
md *reactor.MarkdownRenderer
135+
lastRenderTime time.Time
136+
}
137+
138+
type layoutMsg struct {
139+
content string
140+
wasAtBottom bool
141+
wasAtTop bool
142+
prevOffset int
143+
}
143144
type recordTickMsg time.Time
144145

145146
type checkUpdateTickMsg time.Time
@@ -1039,7 +1040,8 @@ func (m *model) handleChatKey(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
10391040
m.saveState()
10401041
m.isThinking = true
10411042
m.wasStreaming = false // Reset streaming flag for new turn
1042-
return m, tea.Batch(m.asyncRender(), m.processRequest(v)) default:
1043+
return m, tea.Batch(m.asyncRender(), m.processRequest(v))
1044+
default:
10431045
val := m.textarea.Value()
10441046
m.updateSuggestions(val)
10451047

0 commit comments

Comments
 (0)