From a88d2e1a9e721b5e926944d68f9354d256ac107e Mon Sep 17 00:00:00 2001 From: gastown/crew/dennis Date: Fri, 16 Jan 2026 14:38:53 -0800 Subject: [PATCH] fix(mail): filter unread messages in beads mode ListUnread() was returning all messages in beads mode instead of filtering by the Read field. Apply the same filtering logic used in legacy mode to both code paths. Fixes #595 Co-Authored-By: Claude Opus 4.5 --- internal/mail/mailbox.go | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/internal/mail/mailbox.go b/internal/mail/mailbox.go index 5ae048d3..250ed304 100644 --- a/internal/mail/mailbox.go +++ b/internal/mail/mailbox.go @@ -250,21 +250,17 @@ func (m *Mailbox) listLegacy() ([]*Message, error) { // ListUnread returns unread (open) messages. func (m *Mailbox) ListUnread() ([]*Message, error) { - if m.legacy { - all, err := m.List() - if err != nil { - return nil, err - } - var unread []*Message - for _, msg := range all { - if !msg.Read { - unread = append(unread, msg) - } - } - return unread, nil + all, err := m.List() + if err != nil { + return nil, err } - // For beads, inbox only returns open (unread) messages - return m.List() + var unread []*Message + for _, msg := range all { + if !msg.Read { + unread = append(unread, msg) + } + } + return unread, nil } // Get returns a message by ID.