diff --git a/cmd/entire/cli/resume.go b/cmd/entire/cli/resume.go index 7d597f6b1..686cc6de6 100644 --- a/cmd/entire/cli/resume.go +++ b/cmd/entire/cli/resume.go @@ -7,6 +7,7 @@ import ( "log/slog" "os" "path/filepath" + "sort" "github.com/entireio/cli/cmd/entire/cli/agent" "github.com/entireio/cli/cmd/entire/cli/checkpoint" @@ -420,6 +421,12 @@ func resumeSession(sessionID string, checkpointID id.CheckpointID, force bool) e return resumeSingleSession(ctx, ag, sessionID, checkpointID, repoRoot, force) } + // Sort sessions by CreatedAt so the most recent is last (for display). + // This fixes ordering when subdirectory index doesn't reflect activity order. + sort.Slice(sessions, func(i, j int) bool { + return sessions[i].CreatedAt.Before(sessions[j].CreatedAt) + }) + logging.Debug(ctx, "resume session completed", slog.String("checkpoint_id", checkpointID.String()), slog.Int("session_count", len(sessions)), diff --git a/cmd/entire/cli/strategy/manual_commit_rewind.go b/cmd/entire/cli/strategy/manual_commit_rewind.go index 54ec9a596..ef739dd48 100644 --- a/cmd/entire/cli/strategy/manual_commit_rewind.go +++ b/cmd/entire/cli/strategy/manual_commit_rewind.go @@ -699,6 +699,7 @@ func (s *ManualCommitStrategy) RestoreLogsOnly(point RewindPoint, force bool) ([ SessionID: sessionID, Agent: sessionAgent.Type(), Prompt: promptPreview, + CreatedAt: content.Metadata.CreatedAt, }) } diff --git a/cmd/entire/cli/strategy/strategy.go b/cmd/entire/cli/strategy/strategy.go index 4ce450093..48e83f9ee 100644 --- a/cmd/entire/cli/strategy/strategy.go +++ b/cmd/entire/cli/strategy/strategy.go @@ -473,6 +473,7 @@ type RestoredSession struct { SessionID string Agent agent.AgentType Prompt string + CreatedAt time.Time // From session metadata; used by resume to determine most recent } // LogsOnlyRestorer is an optional interface for strategies that support