···5252 Process -->|< 2 min?<br/>Do it now| Action[Reply/Handle<br/>Immediately]
5353 Process -->|Waiting for others<br/>Press Mw| Waiting[⏳ Waiting]
5454 Process -->|Not now, later<br/>Press Mm| Someday[📅 Someday]
5555- Process -->|Time-specific<br/>Press Mc then c| Scheduled[🗓️ Scheduled]
5555+ Process -->|Time-specific<br/>Press Mc| Scheduled[🗓️ Scheduled]
5656 Process -->|Delete<br/>Press x| Trash[🗑️ Trash]
5757 Process -->|Reference only<br/>Press Mp or P| PaperTrail
5858 Process -->|Newsletter<br/>Press F or Mf| Feed
+1-1
docs/content/docs/_index.md
···5959 Process -->|< 2 min?<br/>Do it now| Action[Reply/Handle<br/>Immediately]
6060 Process -->|Waiting for others<br/>Press Mw| Waiting[⏳ Waiting]
6161 Process -->|Not now, later<br/>Press Mm| Someday[📅 Someday]
6262- Process -->|Time-specific<br/>Press Mc then c| Scheduled[🗓️ Scheduled]
6262+ Process -->|Time-specific<br/>Press Mc| Scheduled[🗓️ Scheduled]
6363 Process -->|Delete<br/>Press x| Trash[🗑️ Trash]
6464 Process -->|Reference only<br/>Press Mp or P| PaperTrail
6565 Process -->|Newsletter<br/>Press F or Mf| Feed
+32-21
internal/ui/model.go
···16641664 // Mark as seen: either immediately (if config = 0) or after timer
16651665 uid := msg.email.UID
16661666 folder := msg.email.Folder
16671667- if m.cfg.UI.MarkAsReadAfterSecs <= 0 {
16681668- // Immediate marking (config = 0)
16671667+ markImmediately := func() {
16691668 go func() { _ = m.imapCli().MarkSeen(nil, folder, uid) }()
16701669 // Update local state immediately
16711670 for i := range m.emails {
···16741673 break
16751674 }
16761675 }
16761676+ }
16771677+ if m.cfg.UI.MarkAsReadAfterSecs <= 0 {
16781678+ // Immediate marking (config = 0)
16791679+ markImmediately()
16771680 } else {
16781678- // Schedule timer-based marking
16811681+ // Schedule timer-based marking (for normal reading flow only)
16791682 m.markAsReadUID = uid
16801683 m.markAsReadFolder = folder
16811684 }
16821682- if m.pendingForward {
16831683- m.pendingForward = false
16841684- return m.launchForwardCmd()
16851685- }
16861686- if m.pendingReply {
16871687- m.pendingReply = false
16881688- return m.launchReplyCmd()
16891689- }
16901690- if m.pendingReplyAll {
16911691- m.pendingReplyAll = false
16921692- return m.launchReplyAllCmd()
16931693- }
16941694- if m.pendingReaction {
16951695- m.pendingReaction = false
16961696- return m.enterReactionMode(msg.email)
16851685+ // Handle pending actions - always mark immediately before launching
16861686+ if m.pendingForward || m.pendingReply || m.pendingReplyAll || m.pendingReaction {
16871687+ // Mark as read immediately when launching compose actions (preserves original behavior)
16881688+ if m.cfg.UI.MarkAsReadAfterSecs > 0 {
16891689+ markImmediately()
16901690+ }
16911691+ if m.pendingForward {
16921692+ m.pendingForward = false
16931693+ return m.launchForwardCmd()
16941694+ }
16951695+ if m.pendingReply {
16961696+ m.pendingReply = false
16971697+ return m.launchReplyCmd()
16981698+ }
16991699+ if m.pendingReplyAll {
17001700+ m.pendingReplyAll = false
17011701+ return m.launchReplyAllCmd()
17021702+ }
17031703+ if m.pendingReaction {
17041704+ m.pendingReaction = false
17051705+ return m.enterReactionMode(msg.email)
17061706+ }
16971707 }
16981708 m.openLinks = extractLinks(msg.body)
16991709 _ = loadEmailIntoReader(&m.reader, msg.email, msg.body, msg.attachments, m.openLinks, m.cfg.UI.Theme, m.width)
17001710 m.state = stateReading
17011701- // Start mark-as-read timer if configured
17021702- if m.cfg.UI.MarkAsReadAfterSecs > 0 {
17111711+ // Refresh inbox list if immediate mode, or start timer
17121712+ if m.cfg.UI.MarkAsReadAfterSecs <= 0 {
17131713+ return m, m.applyFilter()
17141714+ } else {
17031715 return m, m.scheduleMarkAsReadTimer(uid, folder)
17041716 }
17051705- return m, nil
1706171717071718 case sendDoneMsg:
17081719 m.loading = false