feat(mail): Sort pinned messages first in inbox (gt-ngu1)
Add Pinned field to BeadsMessage and sort pinned messages before unpinned ones in listBeads(). Within each group, sort by newest first. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -104,6 +104,14 @@ func (m *Mailbox) listBeads() ([]*Message, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Sort pinned messages first, then by timestamp (newest first)
|
||||
sort.Slice(beadsMsgs, func(i, j int) bool {
|
||||
if beadsMsgs[i].Pinned != beadsMsgs[j].Pinned {
|
||||
return beadsMsgs[i].Pinned // pinned comes first
|
||||
}
|
||||
return beadsMsgs[i].CreatedAt.After(beadsMsgs[j].CreatedAt)
|
||||
})
|
||||
|
||||
// Convert to GGT messages
|
||||
var messages []*Message
|
||||
for _, bm := range beadsMsgs {
|
||||
|
||||
@@ -154,6 +154,7 @@ type BeadsMessage struct {
|
||||
Status string `json:"status"` // open=unread, closed=read
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
Labels []string `json:"labels"` // Metadata labels (from:X, thread:X, reply-to:X, msg-type:X)
|
||||
Pinned bool `json:"pinned,omitempty"`
|
||||
|
||||
// Cached parsed values (populated by ParseLabels)
|
||||
sender string
|
||||
|
||||
Reference in New Issue
Block a user