diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index d38d2c969..1b123f532 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -201,6 +201,7 @@ export namespace Server { }), async (c) => { const sessions = await Array.fromAsync(Session.list()) + sessions.sort((a, b) => b.time.updated - a.time.updated) return c.json(sessions) }, ) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 01634ecdc..b008a9e35 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -509,6 +509,8 @@ export namespace Session { for (const part of userParts) { await updatePart(part) } + // mark session as updated since a message has been added to it + await update(input.sessionID, (_draft) => {}) if (isLocked(input.sessionID)) { return new Promise((resolve) => { diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go index b3c4fbed6..df4e209cf 100644 --- a/packages/tui/internal/app/app.go +++ b/packages/tui/internal/app/app.go @@ -5,7 +5,6 @@ import ( "fmt" "os" "path/filepath" - "sort" "strings" "log/slog" @@ -532,9 +531,6 @@ func (a *App) ListSessions(ctx context.Context) ([]opencode.Session, error) { return []opencode.Session{}, nil } sessions := *response - sort.Slice(sessions, func(i, j int) bool { - return sessions[i].Time.Created-sessions[j].Time.Created > 0 - }) return sessions, nil }