|
|
@@ -7,6 +7,7 @@ import (
|
|
|
"path/filepath"
|
|
|
"slices"
|
|
|
"strings"
|
|
|
+ "time"
|
|
|
|
|
|
"log/slog"
|
|
|
|
|
|
@@ -653,12 +654,12 @@ func getDefaultModel(
|
|
|
}
|
|
|
|
|
|
func (a *App) IsBusy() bool {
|
|
|
- if a.Session.Time.Compacting > 0 {
|
|
|
- return true
|
|
|
- }
|
|
|
if len(a.Messages) == 0 {
|
|
|
return false
|
|
|
}
|
|
|
+ if a.IsCompacting() {
|
|
|
+ return true
|
|
|
+ }
|
|
|
lastMessage := a.Messages[len(a.Messages)-1]
|
|
|
if casted, ok := lastMessage.Info.(opencode.AssistantMessage); ok {
|
|
|
return casted.Time.Completed == 0
|
|
|
@@ -666,6 +667,13 @@ func (a *App) IsBusy() bool {
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
+func (a *App) IsCompacting() bool {
|
|
|
+ if time.Since(time.UnixMilli(int64(a.Session.Time.Compacting))) < time.Second*30 {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ return false
|
|
|
+}
|
|
|
+
|
|
|
func (a *App) HasAnimatingWork() bool {
|
|
|
for _, msg := range a.Messages {
|
|
|
switch casted := msg.Info.(type) {
|