From 3f3b5e9f697d1afbd59652ad33d6241cac488e67 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Tue, 17 Feb 2026 14:47:25 +0100 Subject: [PATCH] Test passed: messages received in order --- internal/mailbox/message.go | 9 ++------- internal/p9/server.go | 11 +++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/internal/mailbox/message.go b/internal/mailbox/message.go index 01669a6..2bd67ba 100644 --- a/internal/mailbox/message.go +++ b/internal/mailbox/message.go @@ -2,6 +2,7 @@ package mailbox import ( "encoding/json" + "fmt" "time" ) @@ -59,11 +60,5 @@ func FromJSON(data []byte) (*Message, error) { } func generateID() string { - // Simple ID generation - reuse existing ID generation logic - const chars = "abcdefghijklmnopqrstuvwxyz0123456789" - b := make([]byte, 8) - for i := range b { - b[i] = chars[time.Now().UnixNano()%int64(len(chars))] - } - return "msg-" + string(b) + return fmt.Sprintf("msg-%d", time.Now().Unix()) } diff --git a/internal/p9/server.go b/internal/p9/server.go index 5500e0a..33eddc2 100644 --- a/internal/p9/server.go +++ b/internal/p9/server.go @@ -14,6 +14,7 @@ import ( "os" "path/filepath" "regexp" + "sort" "strconv" "strings" "sync" @@ -816,6 +817,11 @@ func (s *Server) readDir(path string, offset uint64, count uint32) []byte { messages = mailMgr.GetCompleted("user") } + // Sort messages by ID (which is now timestamp-based) + sort.Slice(messages, func(i, j int) bool { + return messages[i].ID < messages[j].ID + }) + for _, msg := range messages { data, _ := msg.ToJSON() dirs = append(dirs, plan9.Dir{ @@ -891,6 +897,11 @@ func (s *Server) readDir(path string, offset uint64, count uint32) []byte { messages = mailMgr.GetCompleted(sessID) } + // Sort messages by ID (which is now timestamp-based) + sort.Slice(messages, func(i, j int) bool { + return messages[i].ID < messages[j].ID + }) + for _, msg := range messages { data, _ := msg.ToJSON() dirs = append(dirs, plan9.Dir{